You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
Removes the legacy Simple executor to simplify the codebase and reduce
maintenance burden. All queries now use the DataFusion planner, which
provides better performance and more features.
## Changes
### Deleted (7 files, 724 lines)
- `simple_executor/` module (5 files)
- `test_simple_executor_pipeline.rs` test file
### Modified (5 files)
- **query.rs**: Removed Simple variant, `execute_simple()` method, and
related code (~250 lines)
- **lib.rs**: Removed module declaration
- **graph.rs** (Python): Removed Simple from ExecutionStrategy enum
- **README.md**: Updated documentation to remove Simple references
- **graph_execution.rs** (benchmarks): Updated to use DataFusion
## Breaking Changes
**Rust API:**
- ❌ Removed `ExecutionStrategy::Simple` enum variant
- ❌ Removed `CypherQuery::execute_simple()` method
- ✅ Migration: Use `None` or `Some(ExecutionStrategy::DataFusion)`
**Python API:**
- ❌ Removed `ExecutionStrategy.Simple` enum value
- ✅ Migration: Use `None` or `strategy=ExecutionStrategy.DataFusion`
## Behavior
- All queries now use DataFusion planner (same functionality, better
optimization)
- No feature loss - DataFusion supports all Cypher features that Simple
did
- Performance likely improves due to DataFusion's query optimization
## Testing
✅ All 295 unit tests pass
✅ Package builds successfully
✅ No remaining references to Simple executor in codebase
## Impact
Users passing `ExecutionStrategy::Simple` will need to update their code
to use the default DataFusion strategy. This is acceptable as DataFusion
provides strictly more features and better performance.
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The query expects a `HashMap<String, RecordBatch>` keyed by the labels and relationship types referenced in the Cypher text. Each record batch should expose the columns configured through `GraphConfig` (ID fields, property fields, etc.). Relationship mappings also expect a batch keyed by the relationship type (for example `KNOWS`) that contains the configured source/target ID columns and any optional property columns.
@@ -92,10 +89,10 @@ let config = GraphConfig::builder()
92
89
-`CypherQuery::new` parses Cypher text into the internal AST.
93
90
-`with_config` attaches the graph configuration used for validation and execution.
94
91
-`with_parameter` / `with_parameters` bind JSON-serializable values that can be referenced as `$param` in the Cypher text.
95
-
-`execute` is asynchronous and returns an Arrow `RecordBatch`. Pass `None`for the default DataFusion planner or `Some(ExecutionStrategy::Simple)` for the single-table executor. `ExecutionStrategy::LanceNative` is reserved for future native execution support and currently errors.
92
+
-`execute` is asynchronous and returns an Arrow `RecordBatch`. Pass `None`to use the default DataFusion planner. `ExecutionStrategy::LanceNative` is reserved for future native execution support and currently errors.
96
93
-`explain` is asynchronous and returns a formatted string containing the graph logical plan alongside the DataFusion logical and physical plans.
97
94
98
-
Queries with a single `MATCH` clause containing a path pattern are planned as joins using the provided mappings. Other queries can opt into the single-table projection/filter pipeline via `ExecutionStrategy::Simple` when DataFusion's planner is unnecessary.
95
+
All queries use the DataFusion planner for optimization and execution.
99
96
100
97
A builder (`CypherQueryBuilder`) is also available for constructing queries programmatically without parsing text.
101
98
@@ -116,7 +113,6 @@ Basic aggregations like `COUNT` are supported. Optional matches and subqueries a
116
113
-`semantic` – Lightweight semantic checks on the AST.
117
114
-`logical_plan` – Builders for graph logical plans.
0 commit comments