Releases: genezhang/clickgraph
Release v0.6.0
[0.6.0] - 2025-12-22
🚀 Features
- (functions) Add 18 new Neo4j function mappings for v0.5.5
- (functions) Add 30 more Neo4j function mappings for v0.5.5
- (functions) Add ClickHouse function pass-through via ch:: prefix
- (functions) Add ClickHouse aggregate function pass-through via ch. prefix
- (functions) Add chagg. prefix for explicit aggregates, expand aggregate registry to ~150 functions
- (benchmark) Add LDBC SNB Interactive v1 benchmark
- (benchmark) Add ClickGraph schema matching datagen format
- (benchmark) Add LDBC query test script
- (ldbc) Achieve 100% LDBC BI benchmark (26/26 queries)
- Implement chained WITH clause support with CTE generation
- Support ORDER BY, SKIP, LIMIT after WITH clause
- Implement size() on patterns with schema-aware ID lookup
- Add composite node ID infrastructure for multi-column primary keys
- Add CTE reference validation
- CTE-aware variable resolution for WITH clauses
- Fix CTE column filtering and JOIN condition rewriting for WITH clauses
- CTE-aware variable resolution + WITH validation + documentation improvements
- Add lambda expression support for ClickHouse passthrough functions
- Add comprehensive LDBC benchmark suite with loading, query, and concurrency tests
- Implement scope-based variable resolution in analyzer (Phase 1)
- Remove dead CTE validation functions
- Implement CTE column resolution across all join strategies
- Remove obsolete JOIN rewriting code from renderer (Phase 3D-A)
- Move CTE column resolution to analyzer (Phase 3D-B)
- Pre-compute projected columns in analyzer (Phase 3E)
- Add CTE schema registry for analyzer (Phase 3F)
- Use pre-computed projected_columns in renderer (Phase 3E-B)
- Implement cross-branch shared node JOIN detection
- Allow disconnected comma patterns with WHERE clause predicates
- Support multiple sequential MATCH clauses
- Implement generic CTE JOIN generation using correlation predicates
- Complete LDBC SNB schema and data loading infrastructure
- Improve relationship validation error messages
- Clarify node_id semantics as property names with auto-identity mappings
- Complete composite node_id support (Phase 2)
- Add polymorphic relationship resolution architecture
- Complete polymorphic relationship resolution data flow
- Fix polymorphic relationship resolution in CTE generation
- Add Comment REPLY_OF Message schema definition
- Add schema entity collection in VariableResolver for Projection scope
- Add dedicated LabelInference analyzer pass
- Enhance TypeInference to infer both node labels and edge types
- Reduce MAX_INFERRED_TYPES from 20 to 5
- (parser) Add clear error messages for unsupported pattern comprehensions
- (parser) Add clear error messages for bidirectional relationship patterns
- (parser) Convert temporal property accessors to function calls
- (analyzer) Add UNWIND variable scope handling to variable_resolver
- (analyzer) Add type inference for UNWIND elements from collect() expressions
- Support path variables in comma-separated MATCH patterns
- Add polymorphic relationship resolution with node types
- Complete collect(node) + UNWIND tuple mapping & metadata preservation architecture
- Make CLICKHOUSE_DATABASE optional with 'default' fallback
- Add parser support for != (NotEqual) operator
- Add unified test schema for streamlined testing
- Add unified test data setup and fix matrix test schema issues
- Complete multi-tenant parameterized view support
- Add denormalized flights schema to unified test schema
- Add VLP transitivity check to prevent invalid recursive patterns
🐛 Bug Fixes
- (benchmark) Use Docker-based LDBC data generation
- (benchmark) Align DDL with actual datagen output format
- (benchmark) Add ClickHouse credentials support
- (benchmark) Align DDL and schema with actual datagen output
- (ldbc) Fix CTE pattern for WITH + table alias pass-through
- (ldbc) Fix ic3 relationship name POST_IS_LOCATED_IN -> POST_LOCATED_IN
- WITH+MATCH CTE generation for correct SQL context
- Replace all silent defaults with explicit errors in render_expr.rs
- Eliminate ViewScan silent defaults - require explicit relationship columns
- Expand WITH TableAlias to all columns for aggregation queries
- Track CTE schemas to build proper property_mapping for references
- Remove CTE validation to enable nested WITH clauses
- Prevent duplicate CTE generation in multi-level WITH queries
- Three-level WITH nesting with correct CTE scope resolution
- Add proper schemas to WITH/HAVING tests
- Correct CTE naming convention to use all exported aliases
- Coupled edge alias resolution for multiple edges in same table
- Rewrite expressions in intermediate CTEs to fix 4-level WITH queries
- Add GROUP BY and ORDER BY expression rewriting for final queries
- Issue #6 - Fix Comma Pattern and NOT operator bugs
- Resolve 3 critical LDBC query blocking issues
- (ldbc) Inline property matching & semantic relationship expansion
- (ldbc) Handle IS NULL checks on relationship wildcards (IS7)
- (ldbc) Fix size() pattern comprehensions - handle internal variables correctly (BI8)
- (ldbc) Rewrite path functions in WITH clause (IC1)
- Strip database prefixes from CTE names for ClickHouse compatibility
- Cartesian Product WITH clause missing JOIN ON
- Operator precedence in expression parser
- VLP endpoint JOINs with alias rewriting for chained patterns
- Correct NOT operator precedence and remove hardcoded table fallbacks
- Three critical shortestPath and query execution bugs
- Extend VLP alias rewriting to WHERE clauses for IC1 support
- Use correct CTE names for multi-variant relationship JOINs
- Remove database prefix from CTE table names in cross-branch JOINs
- Hoist trailing non-recursive CTEs to prevent nesting scope issues
- VLP + WITH label corruption bug - use node labels in RelationshipSchema
- Resolve compilation errors from AST and GraphRel changes
- Add fallback to lookup table names from relationship schema
- Complete RelationshipSchema refactoring - all 646 tests passing
- Add database prefixes to base table JOINs
- Use underscore convention for CTE column aliases
- Thread node labels through relationship lookup pipeline for polymorphic relationships
- Support filtered node views in relationship validation
- Add JOIN dependency sorting to CTE generation path
- Use existing TableCtx labels in multi-pattern MATCH label inference
- TypeInference creates ViewScan for inferred node labels
- QueryValidation respects parser normalization
- Populate from_id/to_id columns during JOIN creation for correct NULL checks
- (ldbc) Align BI queries with LDBC schema definitions
- Prevent RefCell panic in populate_relationship_columns_from_plan
- UNWIND after WITH now uses CTE as FROM table instead of system.one
- Replace all panic!() with log::error!() - PREVENT SERVER CRASHES
- Clean up unit tests - fix 21 compilation errors
- Complete unit test cleanup - fix assertions and mark unimplemented features
- Replace non-standard LIKE syntax with proper OpenCypher string predicates
- Add != operator support to comparison expression parser
- Preserve database prefix in ViewTableRef SQL generation
- Relationship variable expansion + consolidate property helpers
- Use relationship alias for denormalized edge FROM clause
- Re-enable selective cross-branch JOIN for comma-separated patterns
- Rel_type_index to prefer composite keys over simple keys
- WITH...MATCH pattern using wrong table for FROM clause
- Update test labels to match unified_test_schema
- Test_multi_database.py - use schema_name instead of database for USE clause
- Unify aggregation logic and fix multi-schema support
- Multi-table label bug fixes and error handling improvements
💼 Other
- Fix dependency vulnerabilities for v0.5.5
- Partial fix for nested WITH clauses - add recursive handling
- Multi-variant CTE column name resolution in JOIN conditions
- SchemaInference using table names instead of node labels
🚜 Refactor
- Fix compiler warnings and clean up unused variables
- (functions) Change ch:: to ch. prefix for Neo4j ecosystem compatibility
- Extract TableAlias expansion into helper functions
- Replace wildcard expansion in build_with_aggregation_match_cte_plan with helper
- Remove deprecated v1 graph pattern handler (1,568 lines)
- Extract CTE hoisting helper function
- Remove unused ProjectionKind::With enum variant
- Remove 676 lines of dead WITH clause handling code
- Remove 47 lines of dead GraphNode branch with empty property_mapping
- Remove redundant variable resolution from renderer (Phase 3A)
- Remove unused bidirectional and FK-edge functions
- Remove dead code function find_cte_in_plan
- Consolidate duplicate property extraction code (-23 lines)
- Remove dead extract_ctes() function (-301 lines)
- Separate graph labels from table names in RelationshipSchema
- Remove redundant WithScopeSplitter analyzer pass
- Remove old parsing-time label inference
- Consolidate inference logic into TypeInference with polymorphic support
- Replace hardcoded fallbacks with descriptive errors
- Add strict validation for system.one usage in UNWIND
- ELIMINATE ALL HARDCODED FALLBACKS - fail fast instead
- Consolidate test data setup - use MergeTree, remove duplicates
📚 Documentation
- Update wiki documentation for v0.5.4 release
- Archive wiki for v0.5.4 release
- Add UNWIND clause documentation to wiki
- Update v0.5.4 wiki snapshot with UNWIND documentation
- Update Known-Limitations with recently implemented features
- Update v0.5.4 wiki snapshot with corrected feature status
- Add 30 new functions to Cypher-Functions.md reference
- Expand vector similarity section with RAG usage
- Clarify scalar vs aggregate function categories in ch.* docs
- Add lambda expression limitation to ch.* pass-through documentation
- Split ClickHous...
Release v0.5.4
[0.5.4] - 2025-12-08
🚀 Features
- Add native support for self-referencing FK pattern
- Add relationship uniqueness enforcement for undirected patterns
- (schema) Add fixed-endpoint polymorphic edge support
- (union) Add UNION and UNION ALL query support
- Multi-table label support and denormalized schema improvements
- (pattern_schema) Add unified PatternSchemaContext abstraction - Phase 1
- (graph_join_inference) Integrate PatternSchemaContext - Phase 2
- (graph_join_inference) Add handle_graph_pattern_v2 - Phase 3
- (pattern_schema) Add FkEdgeJoin strategy for FK-edge patterns
- (graph_join) Wire up handle_graph_pattern_v2 with USE_PATTERN_SCHEMA_V2 env toggle
🐛 Bug Fixes
- GROUP BY expansion and count(DISTINCT r) for denormalized schemas
- Undirected multi-hop patterns generate correct SQL
- Support fixed-endpoint polymorphic edges without type_column
- Correct polymorphic filter condition in graph_join_inference
- Normalize GraphRel left/right semantics for consistent JOIN generation
- Recurse into nested GraphRels for VLP detection
- (render_plan) Add WHERE filters for VLP chained pattern endpoints (Issue #5)
- (parser) Reject binary operators (AND/OR/XOR) as variable names
- Multi-hop anonymous patterns, OPTIONAL MATCH polymorphic, string operators
- Aggregation and UNWIND bugs
- Denormalized schema query pattern fixes (TODO-1, TODO-2, TODO-4)
- Cross-table WITH correlation now generates proper JOINs (TODO-3)
- WITH clause alias propagation through GraphJoins wrapper (TODO-8)
- Multi-hop denormalized edge JOIN generation
- Update schema files to match test data columns
- (pattern_schema) Pass prev_edge_info for multi-hop detection in v2 path
- (filter_tagging) Correct owning edge detection for multi-hop intermediate nodes
- FK-edge JOIN direction bug - use join_side instead of fk_on_right
- Add polymorphic label filter generation for edges
🚜 Refactor
- Unify FK-edge pattern for self-ref and non-self-ref cases
- Minor code cleanup in bidirectional_union and plan_builder_helpers
- Make PatternSchemaContext (v2) the default join inference path
- Reorganize benchmarks into individual directories
- Replace NodeIdSchema.column with Identifier-based id field
- Change YAML field id_column to node_id for consistency
- Extract predicate analysis helpers to plan_builder_helpers.rs
- Extract JOIN and filter helpers to plan_builder_helpers.rs
📚 Documentation
- Update README for v0.5.3 release
- Add fixed-endpoint polymorphic edge documentation
- Add VLP+chained patterns docs and private security tests
- Document Issue #5 (WHERE filter on VLP chained endpoints)
- (readme) Minor wording improvements
- Update PLANNING_v0.5.3 and CHANGELOG with bug fix status
- Add unified schema abstraction proposal and test scripts
- Add unified schema abstraction Phase 4 completion to STATUS
- Update unified schema abstraction progress - Phase 4 fully complete
- (benchmarks) Add ClickHouse env vars and fix paths in README
- (benchmarks) Streamline README to be a concise index
- Archive PLANNING_v0.5.3.md - all bugs resolved
🧪 Testing
- Add multi-hop pattern integration tests
- Fix Zeek integration tests - response format and skip cross-table tests
- Add v1 vs v2 comparison test script
- Add unit tests for predicate analysis helpers
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md [skip ci]
- Make test files use CLICKGRAPH_URL env var for port flexibility
- (benchmarks) Move social_network-specific files to subdirectory
Release v0.5.3
[0.5.3] - 2025-12-02
🚀 Features
- Add regex match (=~) operator and fix collect() function
- Add EXISTS subquery and WITH+MATCH chaining support
- Add label() function for scalar label return
🐛 Bug Fixes
- Remove unused schemas volume from docker-compose
- Parser now rejects invalid syntax with unparsed input
- Column alias for type(), id(), labels() graph introspection functions
- Update release workflow to use clickgraph binary name
- Update release workflow to use clickgraph-client binary name
- Build entire workspace in release workflow
📚 Documentation
- Archive wiki for v0.5.2 release
- Fix schema documentation and shorten README
- Fix Quick Start to include required GRAPH_CONFIG_PATH
- Add 3 new known issues from ontime schema testing
- Update KNOWN_ISSUES.md - WHERE AND now caught
- Clean up KNOWN_ISSUES.md - remove resolved issues
- Remove false known limitations - all verified working
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md [skip ci]
- Release v0.5.3
- Update CHANGELOG.md [skip ci]
- Update Cargo.lock for v0.5.3
- Update CHANGELOG.md [skip ci]
- Update CHANGELOG.md [skip ci]
- Update CHANGELOG.md [skip ci]
Release v0.5.2
[0.5.2] - 2025-11-30
🚀 Features
- Add docker-compose.dev.yaml for development
- [breaking] Phase 1 - Fixed-length paths use inline JOINs instead of CTEs
- Add cycle prevention for fixed-length paths
- Restore PropertyValue and denormalized support from stash, integrate with anchor_table
- Complete denormalized query support with alias remapping and WHERE clause filtering
- Implement denormalized node-only queries with UNION ALL
- Support RETURN DISTINCT for denormalized node-only queries
- Support ORDER BY for denormalized UNION queries
- Fix UNION ALL aggregation semantics for denormalized node queries
- Variable-length paths for denormalized edge tables
- Add schema-level filter field with SQL predicate parsing
- Schema-level filters and OPTIONAL MATCH LEFT JOIN fix
- Add VLP + UNWIND support with ARRAY JOIN generation
- Implement coupled edge alias unification for denormalized patterns
- Implement polymorphic edge query support
- (polymorphic) Add VLP polymorphic edge filter support
- (polymorphic) Add IN clause support for multiple relationship types in single-hop
- Complete polymorphic edge support for wildcard relationship patterns
- Add edge inline property filter tests and update documentation
- Implement bidirectional pattern UNION ALL transformation
🐛 Bug Fixes
- ORDER BY rewrite bug for chained JOIN CTEs
- Zero-hop variable-length path support
- Remove ChainedJoinGenerator CTE for fixed-length paths
- Complete PropertyValue type conversions in plan_builder.rs
- Revert table alias remapping in filter_tagging to preserve filter context
- Eliminate duplicate WHERE filters by optimizing FilterIntoGraphRel
- Correct JOIN order and FROM table selection for mixed property expressions
- Ensure variable-length and shortest path queries use CTE path
- Destination node properties now map to correct columns in denormalized edge tables
- Multi-hop denormalized edge patterns and duplicate WHERE filters
- Variable-length path schema resolution for denormalized edges
- Add edge_id support to RelationshipDefinition for cycle prevention
- Fixed-length VLP (*1, *2, *3) now generates inline JOINs
- Fixed-length VLP (*2, *3) now works correctly
- Denormalized schema VLP property alias resolution
- VLP recursive CTE min_hops filtering and aggregation handling
- OPTIONAL MATCH + VLP returns anchor when no path exists
- RETURN r and graph functions (type, id, labels)
- Support inline property filters with numeric literals
- Push projections into Union branches for bidirectional patterns
- Polymorphic multi-type JOIN filter now uses IN clause
💼 Other
- Manual addition of denormalized fields (incomplete)
🚜 Refactor
- Simplify ORDER BY logic for inline JOINs
- Simplify GraphJoins FROM clause logic - use relationship table when no joins exist
- Store anchor table in GraphJoins, eliminate redundant find_anchor_node() calls
- Set is_denormalized flag directly in analyzer, remove redundant optimizer pass
- Move helper functions from plan_builder.rs to plan_builder_helpers.rs
- Rename co-located → coupled edges terminology
- Consolidate schema loading with shared helpers
- Consolidated VLP handling with VlpSchemaType
📚 Documentation
- Prioritize Docker Hub image in getting-started guide
- Update README with v0.5.1 Docker Hub release
- Add v0.5.2 planning document
- Update wiki Quick Start to use Docker Hub image with credentials
- Add Zeek network log examples and denormalized edge table guide
- Update STATUS.md with denormalized single-hop fix
- Update denormalized blocker notes with current status
- Update denormalized edge status to COMPLETE
- Add graph algorithm support to denormalized edge docs
- Add 0-hop pattern support to denormalized edge docs
- (wiki) Update denormalized properties with all supported patterns
- Add coupled edges documentation
- (wiki) Add Coupled Edges section to denormalized properties
- Add v0.5.2 TODO list for polymorphic edges and code consolidation
- Mark schema loading consolidation complete in TODO
- Update STATUS.md with polymorphic edge filter completion
- Add Schema-Basics.md and wiki versioning workflow
- Update documentation for v0.5.2 schema variations
- Update KNOWN_ISSUES.md with v0.5.2 status
- Update KNOWN_ISSUES.md with fixed-length VLP resolution
- Update KNOWN_ISSUES with VLP fixes and *0 pattern limitation
- Add Cypher Subgraph Extraction wiki with Nebula GET SUBGRAPH comparison
- Update README with v0.5.2 features
🎨 Styling
- Use UNION DISTINCT
🧪 Testing
- Add comprehensive Docker image validation suite
- Add comprehensive schema variation test suite (73 tests)
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md [skip ci]
- Update CHANGELOG.md [skip ci]
- Clean up root directory - remove temp files and organize Python tests
- Release v0.5.2
- Update CHANGELOG.md [skip ci]
- Update Cargo.lock for v0.5.2
Release v0.5.1
[0.5.1] - 2025-11-20
🚀 Features
- Add SQL Generation API (v0.5.1)
- Implement RETURN DISTINCT for de-duplication
- Add role-based connection pool for ClickHouse RBAC
🐛 Bug Fixes
- Eliminate flaky cache LRU eviction test with millisecond timestamps
- Replace docker_publish.yaml with docker-publish.yml
- Add missing distinct field to all Projection initializations
📚 Documentation
- Fix getting-started guide issues
- Update STATUS.md with fixed flaky test achievement (423/423 passing)
- Add /query/sql endpoint and RETURN DISTINCT documentation
- Add /query/sql endpoint and RETURN DISTINCT to wiki
🧪 Testing
- Add role-based connection pool integration tests
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md [skip ci]
- Release v0.5.1
- Update CHANGELOG.md [skip ci]
Release v0.5.0
[0.5.0] - 2025-11-18
Release Name: Enterprise Readiness
Test Status: 422/422 unit tests (100%), 236/400 integration tests (59% for implemented features)
Documentation: Complete wiki (19 pages), all APIs documented, zero broken links
🚀 Features
Roadmap Phase 2 Complete: Enterprise Readiness
-
Anonymous edge pattern support (untyped relationships)
- Queries like
MATCH (a)-[r]->(b)now automatically expand to UNION of all relationship types - Schema-based automatic expansion:
[]→[:TYPE1|TYPE2|TYPE3] - Leverages existing multiple relationship type UNION logic
- Example:
MATCH (a)-[]->(b)generates CTE withUNION ALLacross all relationship tables - Implementation:
match_clause.rslines 406-434 (Nov 18, 2025) - Enables more flexible graph queries without explicit relationship typing
- Queries like
-
Multi-tenant parameterized views with cache optimization
- SQL generation with
$paramNameplaceholders for efficient caching - Single cache entry shared across all tenants (99% memory reduction)
- Runtime parameter substitution maintains tenant isolation
- Cache hit rate improved to ~100% for multi-tenant workloads
- 2x performance improvement on cache hits (18ms → 9ms)
- Commits: 805db43 (cache optimization), fa215e3 (docs), 2d1cb04-a639049 (core feature)
- SQL generation with
-
Comprehensive multi-tenancy support
- Schema configuration:
view_parameters: [tenant_id, region, ...] - HTTP API:
view_parametersfield in query requests - Bolt protocol: Extract from RUN message metadata
- Multi-parameter support: Unlimited parameters per view
- Parameter merging: view_parameters + query parameters
- Full documentation:
docs/multi-tenancy.mdwith 5 patterns
- Schema configuration:
-
SET ROLE RBAC support
- ClickHouse native RBAC via
SET ROLE 'viewer' - HTTP API:
rolefield in requests - Bolt protocol: Role extraction from metadata
- Column-level security: Combine with row-level (parameterized views)
- Commit: 5d0f712
- ClickHouse native RBAC via
-
ReplacingMergeTree FINAL support (complete)
- Engine detection: Identify ReplacingMergeTree tables (commit 8694728)
- Schema configuration:
use_final: boolfields (commit 2334633) - SQL generation: Correct FINAL placement (
FROM table AS alias FINAL) (commits c4a6c95, 2ae16fd) - ViewTableRef pipeline: Propagates use_final through query execution
- Schema loading integration: Auto-detect engines via
to_graph_schema_with_client()(commit 97d67fd) - Auto-set use_final based on engine type with manual override support
-
Auto-schema discovery (complete) (commit 97d67fd)
- Column auto-discovery via
system.columnsquery - Identity property mappings:
column_name → column_nameby default - Selective column exclusion:
exclude_columns: [_version, _internal] - Manual override system:
property_mappingswins over auto-discovery - Automatic engine detection + FINAL support
- 90% YAML reduction for wide tables (50 columns → 5 lines)
- Backward compatible: Manual schemas still work
- Example:
schemas/examples/auto_discovery_demo.yaml - Tests:
tests/integration/test_auto_discovery.py - Documentation:
notes/auto-schema-discovery.md
- Column auto-discovery via
-
HTTP Schema Loading API
- Runtime schema registration:
POST /schemas/load - List schemas:
GET /schemas - Get schema details:
GET /schemas/{name} - Full YAML content support with
config_contentparameter - Auto-discovery compatible
- No server restart required
- Runtime schema registration:
🐛 Bug Fixes
-
Anonymous node pattern support
- Fixed
MATCH ()-[r:FOLLOWS]->()pattern SQL generation (Nov 17, 2025) - Automatic label inference from relationship schema
- Removed early-return skips for nodes without labels
- JOIN creation now based on graph structure, not just SELECT references
- Affected queries:
()-[r]->(),(a)-[r]->() - Fix locations:
graph_join_inference.rs(lines 777-818, 1228),graph_context.rs(lines 87-127)
- Fixed
-
COUNT aggregation in OPTIONAL MATCH contexts (Nov 18, 2025)
- Fixed anchor node selection to prioritize required nodes
- Fixed recursive expression tagging for transformations
- Added CASE expression support in projection tagging
- Added CASE expression detection in GROUP BY
- All aggregation tests passing (29/29)
-
Correct FINAL keyword syntax (commit 2ae16fd)
- Fixed placement: FINAL must come AFTER table alias
- Verified with actual ClickHouse instance
- Updated all 13 ViewTableRef construction sites
- Proper syntax:
FROM table AS t FINAL(notFROM table FINAL AS t)
📚 Documentation
-
Complete Wiki Documentation (19 pages, 3 new reference pages)
- Created
API-Reference-HTTP.md(450+ lines) - Complete HTTP API reference - Created
Cypher-Language-Reference.md(600+ lines) - Full Cypher syntax guide - Created
Known-Limitations.md(500+ lines) - Limitations and workarounds - Updated
Schema-Configuration-Advanced.mdwith working schema loading API - Fixed all broken reference links (0 broken links)
- Cross-platform examples (curl, Python, PowerShell)
- Created
-
Bolt Protocol Documentation Updates
- Updated all docs to reflect Bolt Protocol 5.8 is fully functional
- Removed outdated "query execution pending" warnings
- Added working examples with Neo4j drivers
- Updated README.md, docs/api.md, wiki pages
- Clarified production-ready status
-
Multi-Tenancy & RBAC
- Complete guide:
docs/multi-tenancy.mdwith 5 patterns - Example schemas: Simple + encrypted multi-tenancy
- Technical notes:
notes/parameterized-views.md - Migration guide for existing deployments
- Complete guide:
-
Auto-Discovery
- Feature documentation:
AUTO_DISCOVERY_STATUS.md - HTTP API usage examples
- Schema configuration patterns
- Feature documentation:
🧪 Testing
-
Unit Tests: 422/422 passing (100%)
- Fixed 16 test failures from aggregation bugs
- All test categories passing
- Comprehensive coverage
-
Integration Tests: 236/400 passing (59%)
- 59% = tests for implemented features
- Fixed ClickHouse credential issues
- Marked 9 aspirational tests as skipped
- Real bug fixed: COUNT in OPTIONAL MATCH
-
E2E Tests
- 11 test classes for multi-tenancy
- ACME/GLOBEX tenant isolation validated
- Cache behavior verified
- Performance validated (<100ms)
🎯 Production Readiness
- ✅ All core features complete and tested
- ✅ Bolt Protocol 5.8 fully functional with all E2E tests passing (4/4)
- ✅ E2E validation with multiple tenants
- ✅ Cache optimization validated (2x performance)
- ✅ Security patterns documented
- ✅ Migration path for existing deployments
- ✅ Professional documentation standards
- ✅ Zero broken links in documentation
Release v0.4.0 - Query Cache, Bolt Protocol & Performance Baseline
[0.4.0] - 2025-11-15
🎉 ClickGraph v0.4.0: Foundation Complete
Phase 1 of the ClickGraph roadmap is complete! This release brings development-ready query caching, full Neo4j Bolt 5.8 protocol support, and a validated performance baseline.
✨ What's New
Query Performance 🚀
- Query plan cache with LRU eviction (10-100x speedup)
- Parameter support for efficient query reuse
- Benchmark suite: 14 queries validated at 1K-10K user scale
Neo4j Compatibility 🔌
- Full Bolt 5.8 protocol implementation
- Works with Neo4j Python driver v6.0.2, Neo4j Browser
- 25+ Neo4j function mappings (datetime, string, math)
Graph Features 📊
- Undirected relationships:
(a)-[r]-(b)patterns - Variable-length paths:
*,*1..3,*..5 - Shortest path algorithms
- OPTIONAL MATCH (LEFT JOIN semantics)
Code Quality 🔧
- Major refactoring: 22% size reduction in query planner
- Improved test coverage: 406/407 Rust tests
- Better error handling and documentation
📈 Performance
- Scale 1 (1K users): 2077ms mean
- Scale 10 (10K users): 2088ms mean
- Only 0.5% overhead for 10x data growth
🔧 Installation
git clone https://github.com/genezhang/clickgraph.git
cd clickgraph
cargo build --release📚 Documentation
- README - Getting started
- STATUS - Current capabilities
- ROADMAP - Future plans
- KNOWN_ISSUES - Limitations
🙏 Next Steps
Phase 2 (v0.5.0) will focus on enterprise readiness:
- RBAC & row-level security
- Multi-tenant support
- Comprehensive documentation
- Schema evolution tools
See ROADMAP.md for details.
🐛 Known Limitations
- Anonymous node patterns have SQL generation issues (workaround: use named nodes)
- 64% integration test pass rate (111 tests represent feature gaps)
- Variable-length undirected paths use forward-only traversal
See KNOWN_ISSUES.md for complete list.
Full Changelog: CHANGELOG.md
Release v0.3.0
[0.3.0] - 2025-11-10
🚀 Features
- Complete WITH clause with GROUP BY, HAVING, and CTE support
- Enable per-request schema support for thread-safe multi-tenant architecture
- Add schema-aware helper functions in render layer
🐛 Bug Fixes
- Multi-hop graph query planning and join generation
- Update path variable tests to match tuple() implementation
- Improve anchor node selection to prefer LEFT nodes first
- Prevent double schema prefix in CTE table names
- Use correct node alias for FROM clause in GraphRel fallback
- Prevent both LEFT and RIGHT nodes from being marked as anchor
- Remove duplicate JOINs for path variable queries
- Detect multiple relationship types in GraphJoins tree
- Update JOINs to use UNION CTE for multiple relationship types
- Correct release date in README (November 9, not 23)
💼 Other
- Add schema to PlanCtx (Phases 1-3 complete)
🚜 Refactor
- Remove BITMAP traversal code and fix relationship direction handling
- Rename handle_edge_list_traversal to handle_graph_pattern
- Remove redundant GLOBAL_GRAPH_SCHEMA
📚 Documentation
- Prepare for next session and organize repository
- Python integration test status report (36.4% passing)
- Update STATUS and KNOWN_ISSUES for GLOBAL_GRAPH_SCHEMA removal
- Clean up outdated KNOWN_ISSUES and update README
🧪 Testing
- Add debugging utilities for anchor node and JOIN issues
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md [skip ci]
- Disable automatic docker publish
- Clean up test debris and remove deleted optimizer
- Replace emoji characters with text equivalents in test files
- Organize root directory for public repo
- Bump version to 0.2.0
- Bump version to 0.3.0
[0.2.0] - 2025-11-06
🚀 Features
- Implement dual-key schema registration for startup-loaded schemas
- Add COUNT(DISTINCT node) support and fix integration test infrastructure
- Support edge-driven queries with anonymous node patterns
🐛 Bug Fixes
- Simplify schema strategy - use only server's default schema
- Remove ALL hardcoded property mappings - CRITICAL BUG FIX
- Enhance column name helpers to support both prefixed and unprefixed names
- Remove is_simple_relationship logic that skipped node joins
- Configure Docker to use integration test schema
- Only create node JOINs when nodes are referenced in query
- Preserve table aliases in WHERE clause filters
- Extract where_predicate from GraphRel during filter extraction
- Remove direction-based logic from JOIN inference - both directions now work
- GraphNode uses its own alias for PropertyAccessExp, not hardcoded 'u'
- Complete OPTIONAL MATCH with clean SQL generation
- Add user_id and product_id to schema property_mappings
- Add schema prefix to JOIN tables in cte_extraction.rs
- Handle fully qualified table names in table_to_id_column
- Variable-length paths now generate recursive CTEs
- Multiple relationship types now generate UNION CTEs
- Correct edge list test assertions for direction semantics
💼 Other
- Document property mapping bug investigation
🚜 Refactor
- Remove /api/ prefix from routes for simplicity
📚 Documentation
- Final Phase 1 summary with all 12 test suites
- Add schema loading architecture documentation and API test
- Update STATUS with integration test results
- Create action plan for property mapping bug fix
- Update STATUS and CHANGELOG with critical bug fix resolution
- Document WHERE clause gap for simple MATCH queries
- Add schema management endpoints and update API references
- Update STATUS.md with WHERE clause alias fix
- Update STATUS with WHERE predicate extraction fix
- Update STATUS and CHANGELOG with schema fix
- Update STATUS with complete session summary
🧪 Testing
- Add comprehensive integration test framework
- Add comprehensive relationship traversal tests
- Add variable-length path and shortest path integration tests
- Add OPTIONAL MATCH and aggregation integration tests
- Complete Phase 1 integration test suite with CASE, paths, and multi-database
- Add comprehensive error handling integration tests
- Add basic performance regression tests
- Initial integration test suite run - 272 tests collected
- Fix schema/database naming separation in integration tests
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md [skip ci]
[0.1.0] - 2025-11-02
🚀 Features
- (parser) Add shortest path function parsing
- (planner) Add ShortestPathMode tracking to GraphRel
- (planner) Detect and propagate shortest path mode
- (sql) Implement shortest path SQL generation with depth filtering
- Add WHERE clause filtering support for shortest path queries
- Add path variable support to parser (Phase 2.1-2.2)
- Track path variables in logical plan (Phase 2.3)
- Pass path variable to SQL generator (Phase 2.4)
- Phase 2.5 - Generate path object SQL for path variables
- Phase 2.6 - Implement path functions (length, nodes, relationships)
- WHERE clause filters for variable-length paths and shortestPath
- Complete allShortestPaths implementation with WHERE filters
- Implement alternate relationship types [:TYPE1|TYPE2] support
- Implement multiple relationship types with UNION logic
- Support multiple relationship types with labels vector
- Complete Path Variables & Functions implementation
- Complete Path Variables implementation with documentation
- Add PageRank algorithm support with CALL statement
- Complete Query Performance Metrics implementation
- Complete CASE expressions implementation with full context support
- Complete WHERE clause filtering pipeline for variable-length paths
- Implement type-safe configuration management
- Systematic error handling improvements - replace panic-prone unwrap() calls
- Complete codebase health restructuring - eliminate runtime panics
- Rebrand from Brahmand to ClickGraph
- Update benchmark suite for ClickGraph rebrand and improved performance testing
- Complete multiple relationship types feature with schema resolution
- Complete WHERE clause filters with schema-driven resolution
- Add per-table database support in multi-schema architecture
- Complete schema-only architecture migration
- Add medium benchmark (10K users, 50K follows) with performance metrics
- Add large benchmark (5M users, 50M follows) - 90% success at massive scale!
- Add Bolt protocol multi-database support
- Add test convenience wrapper and update TESTING_GUIDE
- Implement USE clause for multi-database selection in Cypher queries
🐛 Bug Fixes
- (tests) Add exhaustive pattern matching for ShortestPath variants
- (parser) Improve shortest path function parsing with case-insensitive matching
- (parser) Consume leading whitespace in shortest path functions
- (sql) Correct nested CTE structure for shortest path queries
- (phase2) Phase 2.7 integration test fixes - path variables working end-to-end
- WHERE clause handling for variable-length path queries
- Enable stable background schema monitoring
- Resolve critical TODO/FIXME items causing runtime panics
- Root cause fix for duplicate JOIN generation in relationship queries
- Three critical bug fixes for graph query execution
- Consolidate benchmark results and add SUT information
- Resolve path variable regressions after schema-only migration
- Use last part of CTE name instead of second part
💼 Other
- Prepare v0.1.0 release
🚜 Refactor
- (sql) Wire shortest_path_mode through CTE generator
- Extract CTE generation logic into dedicated module
- Complete codebase health improvements - modular architecture
- Standardize test organization with unit/integration/e2e structure
- Extract common expression processing utilities
- Organize benchmark suite into dedicated directory
- Clean up and improve CTE handling for JOIN optimization
- Remove GraphViewConfig and rename global variables
- Complete migration from view-based to schema-only configuration
- Organize project root directory structure
📚 Documentation
- Add session recap and lessons learned
- Add shortest path implementation session progress
- Comprehensive shortest path implementation documentation
- Add session completion summary
- Update STATUS.md with Phase 2.7 completion - path variables fully working
- Update STATUS.md to reflect current state of multiple relationship types
- Add project documentation and cleanup summaries
- Complete schema validation enhancement documentation
- Update STATUS.md and CHANGELOG.md with completed features
- Update NEXT_STEPS.md with recent completions and current priorities
- Correct ViewScan relationship support - relationships DO use YAML schemas
- Correct ViewScan relationship limitation in STATUS.md
- Remove incorrect OPTIONAL MATCH limitation from STATUS.md and NEXT_STEPS.md
- Document property mapping debug findings and render plan fixes
- Update CHANGELOG with property mapping debug session
- Update CHANGELOG with CASE expressions feature
- Fix numbering inconsistencies and update WHERE clause filtering status
- Update STATUS with type-safe configuration completion
- Update STATUS.md with TODO/FIXME resolution completion
- Clarify DDL parser TODOs are out-of-scope for read-only engine
- Sync documentation with current project status
- Update documentation with bug fixes and benchmark results
- Update README with 100% benchmark success and recent bug fixes
- Update STATUS.md with 100% benchmark success
- Update STATUS and CHANGELOG with enterprise-scale validation
- Add What's New section to README highlighting enterprise-scale validation
- Complete benchmark documentation with all three scales
- Add clear navigation to benchmark results
- Tone down production-ready claims to development build
- Add from_node/to_node fields to all relationship schema examples
- Clarify node label terminology in comments and examples
- Update STATUS.md with November 2nd achievements
- Add multi-database support to README and API docs
- Add PROJECT_STRUCTURE.md guide
- Add comprehensive USE clause documentation
🧪 Testing
- (parser) Add comprehensive shortest path pa...
Release v0.2.0
[0.2.0] - 2025-11-06
🚀 Features
- Implement dual-key schema registration for startup-loaded schemas
- Add COUNT(DISTINCT node) support and fix integration test infrastructure
- Support edge-driven queries with anonymous node patterns
🐛 Bug Fixes
- Simplify schema strategy - use only server's default schema
- Remove ALL hardcoded property mappings - CRITICAL BUG FIX
- Enhance column name helpers to support both prefixed and unprefixed names
- Remove is_simple_relationship logic that skipped node joins
- Configure Docker to use integration test schema
- Only create node JOINs when nodes are referenced in query
- Preserve table aliases in WHERE clause filters
- Extract where_predicate from GraphRel during filter extraction
- Remove direction-based logic from JOIN inference - both directions now work
- GraphNode uses its own alias for PropertyAccessExp, not hardcoded 'u'
- Complete OPTIONAL MATCH with clean SQL generation
- Add user_id and product_id to schema property_mappings
- Add schema prefix to JOIN tables in cte_extraction.rs
- Handle fully qualified table names in table_to_id_column
- Variable-length paths now generate recursive CTEs
- Multiple relationship types now generate UNION CTEs
- Correct edge list test assertions for direction semantics
💼 Other
- Document property mapping bug investigation
🚜 Refactor
- Remove /api/ prefix from routes for simplicity
📚 Documentation
- Final Phase 1 summary with all 12 test suites
- Add schema loading architecture documentation and API test
- Update STATUS with integration test results
- Create action plan for property mapping bug fix
- Update STATUS and CHANGELOG with critical bug fix resolution
- Document WHERE clause gap for simple MATCH queries
- Add schema management endpoints and update API references
- Update STATUS.md with WHERE clause alias fix
- Update STATUS with WHERE predicate extraction fix
- Update STATUS and CHANGELOG with schema fix
- Update STATUS with complete session summary
🧪 Testing
- Add comprehensive integration test framework
- Add comprehensive relationship traversal tests
- Add variable-length path and shortest path integration tests
- Add OPTIONAL MATCH and aggregation integration tests
- Complete Phase 1 integration test suite with CASE, paths, and multi-database
- Add comprehensive error handling integration tests
- Add basic performance regression tests
- Initial integration test suite run - 272 tests collected
- Fix schema/database naming separation in integration tests
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md [skip ci]
[0.1.0] - 2025-11-02
🚀 Features
- (parser) Add shortest path function parsing
- (planner) Add ShortestPathMode tracking to GraphRel
- (planner) Detect and propagate shortest path mode
- (sql) Implement shortest path SQL generation with depth filtering
- Add WHERE clause filtering support for shortest path queries
- Add path variable support to parser (Phase 2.1-2.2)
- Track path variables in logical plan (Phase 2.3)
- Pass path variable to SQL generator (Phase 2.4)
- Phase 2.5 - Generate path object SQL for path variables
- Phase 2.6 - Implement path functions (length, nodes, relationships)
- WHERE clause filters for variable-length paths and shortestPath
- Complete allShortestPaths implementation with WHERE filters
- Implement alternate relationship types [:TYPE1|TYPE2] support
- Implement multiple relationship types with UNION logic
- Support multiple relationship types with labels vector
- Complete Path Variables & Functions implementation
- Complete Path Variables implementation with documentation
- Add PageRank algorithm support with CALL statement
- Complete Query Performance Metrics implementation
- Complete CASE expressions implementation with full context support
- Complete WHERE clause filtering pipeline for variable-length paths
- Implement type-safe configuration management
- Systematic error handling improvements - replace panic-prone unwrap() calls
- Complete codebase health restructuring - eliminate runtime panics
- Rebrand from Brahmand to ClickGraph
- Update benchmark suite for ClickGraph rebrand and improved performance testing
- Complete multiple relationship types feature with schema resolution
- Complete WHERE clause filters with schema-driven resolution
- Add per-table database support in multi-schema architecture
- Complete schema-only architecture migration
- Add medium benchmark (10K users, 50K follows) with performance metrics
- Add large benchmark (5M users, 50M follows) - 90% success at massive scale!
- Add Bolt protocol multi-database support
- Add test convenience wrapper and update TESTING_GUIDE
- Implement USE clause for multi-database selection in Cypher queries
🐛 Bug Fixes
- (tests) Add exhaustive pattern matching for ShortestPath variants
- (parser) Improve shortest path function parsing with case-insensitive matching
- (parser) Consume leading whitespace in shortest path functions
- (sql) Correct nested CTE structure for shortest path queries
- (phase2) Phase 2.7 integration test fixes - path variables working end-to-end
- WHERE clause handling for variable-length path queries
- Enable stable background schema monitoring
- Resolve critical TODO/FIXME items causing runtime panics
- Root cause fix for duplicate JOIN generation in relationship queries
- Three critical bug fixes for graph query execution
- Consolidate benchmark results and add SUT information
- Resolve path variable regressions after schema-only migration
- Use last part of CTE name instead of second part
💼 Other
- Prepare v0.1.0 release
🚜 Refactor
- (sql) Wire shortest_path_mode through CTE generator
- Extract CTE generation logic into dedicated module
- Complete codebase health improvements - modular architecture
- Standardize test organization with unit/integration/e2e structure
- Extract common expression processing utilities
- Organize benchmark suite into dedicated directory
- Clean up and improve CTE handling for JOIN optimization
- Remove GraphViewConfig and rename global variables
- Complete migration from view-based to schema-only configuration
- Organize project root directory structure
📚 Documentation
- Add session recap and lessons learned
- Add shortest path implementation session progress
- Comprehensive shortest path implementation documentation
- Add session completion summary
- Update STATUS.md with Phase 2.7 completion - path variables fully working
- Update STATUS.md to reflect current state of multiple relationship types
- Add project documentation and cleanup summaries
- Complete schema validation enhancement documentation
- Update STATUS.md and CHANGELOG.md with completed features
- Update NEXT_STEPS.md with recent completions and current priorities
- Correct ViewScan relationship support - relationships DO use YAML schemas
- Correct ViewScan relationship limitation in STATUS.md
- Remove incorrect OPTIONAL MATCH limitation from STATUS.md and NEXT_STEPS.md
- Document property mapping debug findings and render plan fixes
- Update CHANGELOG with property mapping debug session
- Update CHANGELOG with CASE expressions feature
- Fix numbering inconsistencies and update WHERE clause filtering status
- Update STATUS with type-safe configuration completion
- Update STATUS.md with TODO/FIXME resolution completion
- Clarify DDL parser TODOs are out-of-scope for read-only engine
- Sync documentation with current project status
- Update documentation with bug fixes and benchmark results
- Update README with 100% benchmark success and recent bug fixes
- Update STATUS.md with 100% benchmark success
- Update STATUS and CHANGELOG with enterprise-scale validation
- Add What's New section to README highlighting enterprise-scale validation
- Complete benchmark documentation with all three scales
- Add clear navigation to benchmark results
- Tone down production-ready claims to development build
- Add from_node/to_node fields to all relationship schema examples
- Clarify node label terminology in comments and examples
- Update STATUS.md with November 2nd achievements
- Add multi-database support to README and API docs
- Add PROJECT_STRUCTURE.md guide
- Add comprehensive USE clause documentation
🧪 Testing
- (parser) Add comprehensive shortest path parser tests
- Add shortest path SQL generation test script
- Add shortest path integration test files
- Improve test infrastructure and schema configuration
- Add end-to-end tests for USE clause functionality
⚙️ Miscellaneous Tasks
- Update .gitignore to exclude temporary files
- Disable CI on push to main (requires ClickHouse infrastructure)
[iewscan-complete] - 2025-10-19
🚀 Features
- ✨ Added basic schema inferenc
- ✨ support for multi node conditions
- Support for multi node conditions
- Query planner rewrite (#11)
- Complete view-based graph infrastructure implementation
- Comprehensive view optimization infrastructure
- Complete ClickGraph production-ready implementation
- Implement relationship traversal support with YAML view integration
- Implement variable-length path traversal for Cypher queries
- Complete end-to-end variable-length path execution
- Add chained JOIN optimization for exact hop count queries
- Add parser-level validation for variable-length paths
- Make max_recursive_cte_evaluation_depth configurable with default of 100
- Add OPTIONAL MATCH AST structures
- Implement OPTIONAL MATCH parser
- Implement OPTIONAL MATCH logical plan integration
- Implement OPTIONAL MATCH with LEFT JOIN semantics
- Implement view-based SQL translation with ViewScan for node queries
- Add debug logging for full SQL queries
- Add schema lookup for relationship types
🐛 Bug Fixes
- 🐛 relation direction when same node types
- 🐛 Property tagging to node name
- 🐛 node name in return clause related issues
- Count start issue (#6)
- Schema integration bug - separate column names from node types
- Rewrite GROUP BY and ORDE...
Release v0.1.0
⚠️ Alpha Release - Developer Preview
ClickGraph v0.1.0 is an alpha release for evaluation and testing purposes.
Recommended Use Cases:
- ✅ Evaluation and testing
- ✅ Development environments
- ✅ Proof-of-concept projects
- ✅ Non-critical workloads with thorough user testing
Not Recommended For:
- ❌ Mission-critical production systems (without extensive testing)
- ❌ Financial or healthcare applications
- ❌ Large-scale production deployments without validation in your environment
What This Means:
- Core functionality is solid and tested (318 unit tests, enterprise-scale benchmarks)
- Integration test coverage is being expanded (see TEST_COVERAGE_PLAN.md)
- We encourage users to test thoroughly in their environments before production use
- Please report any issues you encounter!
Target: v0.2.0 will be marked as "beta" after integration tests, v0.3.0 for "production-ready" (see TEST_COVERAGE_PLAN.md)
ClickGraph v0.1.0 - First Official Release 🎉
Enterprise-scale graph analytics on ClickHouse with Neo4j compatibility.
Release Highlights
- ✅ Successfully tested on 5 million users and 50 million relationships (90% success rate)
- ✅ Full Neo4j Bolt protocol v4.4 support for seamless driver integration
- ✅ USE clause syntax matching Neo4j 4.0+ conventions
- ✅ 318/318 tests passing (100% success rate) - Production-ready quality
- ✅ Windows native support - HTTP and Bolt protocols fully functional
- ✅ Query performance monitoring with built-in metrics and HTTP headers
🚀 Major Features
1. USE Clause for Database Selection
Neo4j 4.0+ compatible database selection directly in Cypher queries.
USE social_network
MATCH (u:User)-[:FOLLOWS]->(friend)
RETURN u.name, collect(friend.name) AS friends- Three-way precedence: USE clause > session/request parameter > default schema
- Case-insensitive (USE/use/Use)
- Qualified names (
USE neo4j.database)
2. Bolt Protocol Multi-Database Support
Full Neo4j 4.0+ compatibility via Bolt protocol.
from neo4j import GraphDatabase
driver = GraphDatabase.driver("bolt://localhost:7687")
with driver.session(database="social_network") as session:
result = session.run("MATCH (u:User) RETURN u.name")3. Path Variables & Functions
Complete path capture and analysis.
MATCH p = (a:User)-[:FOLLOWS*1..3]->(b:User)
WHERE a.name = 'Alice'
RETURN length(p), nodes(p), relationships(p)4. Query Performance Metrics
Built-in monitoring for production deployments.
curl -i http://localhost:8080/query
# Returns headers:
# X-Query-Total-Time: 45.23ms
# X-Query-Execution-Time: 35.66ms5. CASE Expressions
Full conditional expression support.
MATCH (u:User)
RETURN CASE WHEN u.age > 30 THEN 'Senior' ELSE 'Junior' END📊 Benchmark Results
| Scale | Dataset | Success Rate | Status |
|---|---|---|---|
| Large | 5M users, 50M relationships | 90% (9/10) | ✅ Enterprise-scale validated |
| Medium | 10K users, 50K relationships | 100% (10/10) | ✅ Production-ready |
| Small | 1K users, 5K relationships | 100% (10/10) | ✅ Fully tested |
⚠️ Breaking Changes
YAML Schema Field Rename:
from_column->from_idto_column->to_id
See UPGRADING.md for migration instructions and automated scripts.
📦 Installation
Docker (Recommended):
git clone https://github.com/genezhang/clickgraph
cd clickgraph
docker-compose up -dNative Build:
cargo build --release
export CLICKHOUSE_URL="http://localhost:8123"
cargo run --bin clickgraph🔗 Platform Support
| Platform | HTTP | Bolt | Status |
|---|---|---|---|
| Linux (Docker/Native) | ✅ | ✅ | Fully functional |
| macOS | ✅ | ✅ | Fully functional |
| Windows (Native) | ✅ | ✅ | Fixed in v0.1.0! |
| WSL 2 | ✅ | ✅ | Fully functional |
📚 Documentation
- RELEASE_NOTES_v0.1.0.md - Complete release notes
- UPGRADING.md - Migration guide
- README.md - Project overview
- docs/api.md - API documentation
🎯 Known Limitations
- Pattern comprehensions (
[(a)-[]->(b) | b.name]) - Not yet implemented - Subqueries (
CALL { ... }) - Not yet implemented - Write operations - Out of scope (read-only engine by design)
See KNOWN_ISSUES.md for details.
🧪 Testing
- Unit Tests: 318/318 passing (100%)
- End-to-End: Comprehensive validation
- Benchmarks: 3-tier validation (small, medium, large)
🙏 Acknowledgments
ClickGraph is a fork of the Brahmand project with significant enhancements including Bolt protocol support, multi-database capabilities, path variables, performance monitoring, and Windows native support.
Full Changelog: https://github.com/genezhang/clickgraph/blob/main/CHANGELOG.md
Thank you for using ClickGraph! 🎉