Bonobo is a query engine that uses the Arrow type system and aims for maximum compatibility with the Substrait specification. It is capable of:
- Creating plans via SQL or a Dataframe API
- Serializing plans to and from Substrait
- Manipulating/Splitting/Validating query plans
Bonobo does not, by design, implement execution kernels for any plan relations or expressions. Instead, Bonobo aims to make it simple to delegate plans to any Substrait-compatible backends for distributed execution.
go get github.com/joellubi/bonobo
Bonobo is still in early stages of development. Features are being added quickly and the API is subject to change.
For a feature to be considered implemented it should:
- Be supported using the Dataframe API
- Implement both serialization and deserialization to/from Substrait proto
Features:
- Logical Relations
- ReadRel
- NamedTable
- VirtualTable
- ExtensionTable
- LocalFiles
- Filter
- Project
- FilterRel
- FetchRel
- AggregateRel
- SortRel
- JoinRel
- ProjectRel
- SetRel
- ExtensionSingleRel
- ExtensionMultiRel
- ExtensionLeafRel
- CrossRel
- ReferenceRel
- WriteRel
- DdlRel
- ReadRel
- Physical Relations (TBD whether they will be supported)
- Expressions
- Literal
- FieldReference
- ScalarFunction
- WindowFunction
- IfThen
- SwitchExpression
- SingularOrList
- MultiOrList
- Cast
- Subquery
- Nested
- Extensions
- Simple Extensions
- Type
- Type Variation
- Function
- Scalar Function
- Aggregate Function
- Window Function
- Type Syntax Parsing
- Advanced Extensions
- Capabilities
- Simple Extensions
- SQL Support
- Query Clauses
- SELECT
- FROM
- WHERE
- GROUP BY
- ORDER BY
- PARTITION BY
- LIMIT
- JOIN
- OVER
- UNION
- Binary Operators
- Parenthesis
- Expression Aliases
- Identifier Aliases
- Table Subqueries
- Scalar Subqueries
- Functions
- Query Clauses