Skip to content

cube2222/octosql-rs

Repository files navigation

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

Roadmap

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

Contributing

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.

About

WIP PoC rewrite of OctoSQL in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages