This is a work in progress experiment PoC of rewriting OctoSQL in Rust, as I've been seeing 10-100x performance improvements using a more optimized design.
Development has moved to: https://github.com/cube2222/octosql/tree/rust-rewrite
The current roadmap is to achieve feature parity with the Go version of OctoSQL. When this is done, we'll decide which one gets to stay.
- Projection
- Filter
- GroupBy
- Support all types
- More aggregates
- Wildcard
- Triggers
- Counting
- Delay
- Retractions
- Add retractions to Projection (don't allow the user to remove the retraction column)
- Stream join
- Float support (currently not tested and possibly wacky)
- Expressions
- Evaluation in record context.
- Evaluation in execution context of variables (if we're in a subquery, we need to understand both the current record, and variables stemming from record flows above us)
- Common functions / arithmetics. (Currently only comparison operators)
- Map (evaluate expressions, this is the only place where expressions are evaluated in OctoSQL, everything else gets evaluated expressions passed from here by name)
- Wildcard
- Watermarks
- Metadata Message and Handling
- Watermark trigger
- Watermark generators
- Start with Max difference
- Shuffle
- Subqueries
- Handle all primitive types
- Handle multiple columns/rows (Tuple values)
- Lookup join
- Physical Plan (fit for pattern matching)
- Basic optimiser
- Pushing down projections
- Pushing down filters
- Logical Plan
- SQL
- Temporal Extensions
- Join
- Nice output printing
- CSV
- JSON
- Live Table
- Data Sources
- CSV
- MySQL
- PostgreSQL
- JSON
- Parquet
- Excel
- Kafka
- Table Valued Functions
- Range
- Tumble
- Durations and Dates support
- SQL interval
Contributions are welcome!
Please open an issue or contact me personally when you want to try to contribute, so that no work gets duplicated or thrown away.