Commit graph

2 commits

Author SHA1 Message Date
Scott Scoble
a910f07377 feat: add SQL query optimizer with functional runtime
SQLOptimizer.speckdl: state machine spec for the optimizer pipeline
(Parsing → Rewriting → Planning → Generating → Done, plus Failed)

SQLOptimizer-runtime.ts: working TypeScript runtime that actually
optimizes SQL queries:
- Parses SELECT/FROM/JOIN/WHERE/GROUP BY/ORDER BY/LIMIT
- Builds plan trees with cardinality estimation
- Predicate pushdown (splits AND predicates per table)
- Constant folding (evaluates arithmetic in predicates)
- Column pruning
- Physical operator selection (hash/merge/nested_loop joins)
- Cost estimation per plan node
- SQL generation from optimized plan tree

Known issues:
- Predicate pushdown needs to split AND predicates per table
- FROM clause duplicate when both listed and joined
- Cost model needs tuning (hash join startup cost shouldn't exceed
  nested loop savings for medium inputs)

Both files pass tsc --noEmit clean.
2026-05-13 17:00:46 -07:00
Scott Scoble
06232494ed feat: add SQL query optimizer spec (SQLOptimizer.speckdl)
Models a cost-based SQL optimizer pipeline: parse → rewrite → plan → execute.
Exercises state-dependent transforms, cost models, conditional emits,
plan caching, and rollback semantics. Passes tsc --noEmit clean.
2026-05-13 16:51:01 -07:00