query-engine/ROADMAP.md

111 lines
3.8 KiB
Markdown
Raw Normal View History

2026-04-09 10:12:59 +02:00
## Project Roadmap
This document tracks the current state and next steps for the repository.
> [!IMPORTANT]
> The project is still early-stage. Treat this roadmap as directional rather
> than fixed, and do not read unchecked items as implied existing behavior.
### Current Foundation
- [x] Rust crate and binary named `query_engine` / `query-engine`
- [x] Core term representation (`Constant`, `Null`, `Variable`)
- [x] Atom structure (predicate with terms)
- [x] Fact storage via `Instance`
- [x] Tuple-generating dependencies (TGDs)
- [x] Equality-generating dependencies (EGDs)
- [x] Rule and EGD builders
- [x] Variable substitutions and atom unification
- [x] Restricted chase implementation
- [x] Standard chase implementation
- [x] Existential variable support (labeled null generation)
- [x] Multi-atom rule bodies and heads
- [x] Equality merging with union-find support
- [x] REPL, script runner, and local web UI
- [x] Provenance-oriented explanation support
2026-04-09 12:38:43 +02:00
- [x] Relational schema, value, row, and result-set scaffolding
- [x] Predicate-backed catalog inference
- [x] Minimal SQL AST and parser
- [x] Logical plan scaffolding
- [x] Logical-plan execution for the first SQL slice
- [x] `SELECT-FROM-WHERE` support with positional or named columns
- [x] Basic multi-table SQL joins via qualified-column filtering
2026-04-10 09:56:18 +02:00
- [x] Table aliases for self-joins and qualified references
2026-04-10 10:10:46 +02:00
- [x] Basic `ORDER BY` support over output columns
2026-04-09 10:12:59 +02:00
### Near-Term Cleanup
- [ ] Keep all public docs aligned with actual implemented behavior
- [ ] Remove remaining stale terminology in comments and help text
- [ ] Expand examples for the current rule-engine workflow
- [ ] Add rustdoc coverage for the main public types
- [x] Document the current SQL subset and its limits
2026-04-09 10:12:59 +02:00
### Query-Engine Structure
2026-04-09 12:38:43 +02:00
- [x] Introduce a dedicated logical representation module
- [x] Define clear front-end, planning, and execution boundaries
2026-04-09 10:12:59 +02:00
- [ ] Add engine-level abstractions that are not chase-specific
2026-04-09 12:38:43 +02:00
- [x] Establish common schema and typed-value representations
2026-04-09 10:12:59 +02:00
- [ ] Design a source boundary for future scans and pushdown
### Front End and Planning
2026-04-09 12:38:43 +02:00
- [x] Add a parser-oriented module beyond the current rule REPL language
- [x] Add AST types for a structured query front end
- [x] Add logical plan node types
- [x] Add name resolution and schema validation hooks
- [x] Add expression typing and nullability tracking
- [x] Add aliases and richer projection expressions
- [x] Add joins across multiple predicate-backed tables
- [x] Add a catalog path for stable column naming beyond `c0`, `c1`, ...
2026-04-09 10:12:59 +02:00
### Execution and Optimization
- [ ] Introduce physical operator abstractions
2026-04-09 12:38:43 +02:00
- [x] Add a planning step from logical operators to executable operators
2026-04-09 10:12:59 +02:00
- [ ] Add basic rule-based logical rewrites
- [ ] Add statistics and cost-model scaffolding
- [ ] Add indexing and access-path abstractions
### Rule-Engine Evolution
- [x] Restricted chase
- [x] Standard chase
- [ ] Oblivious chase
- [ ] Skolem chase
- [ ] Core chase
- [ ] Negative constraints
- [ ] Stratified negation in rule bodies
- [ ] Disjunctive heads
- [ ] Aggregation support in rule evaluation
- [ ] Semi-naive evaluation
- [ ] Termination analysis helpers
### Data and Interoperability
- [ ] Fact import/export
- [ ] File-backed data source experiments
2026-04-09 12:38:43 +02:00
- [x] Table-like row or batch abstractions
2026-04-09 10:12:59 +02:00
- [ ] Stable script/query file format
- [ ] Integration with external storage or file formats
### Performance and Reliability
- [ ] Predicate indexing for fact lookup
- [ ] Incremental evaluation
- [ ] Benchmarks
- [ ] Fuzzing
- [ ] Profiling-guided optimization passes
### Testing and Tooling
- [x] Unit tests
- [x] Integration tests
- [x] Property-based tests
- [x] Regression tests
2026-04-09 12:38:43 +02:00
- [x] Initial SQL pipeline tests
2026-04-09 10:12:59 +02:00
- [ ] Benchmark coverage
- [ ] Snapshot-style frontend tests
- [ ] More planner/executor tests as those layers are added