Skip to content

Latest commit

 

History

History
89 lines (81 loc) · 2.27 KB

README.md

File metadata and controls

89 lines (81 loc) · 2.27 KB

Bonobo

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.

Install

go get github.com/joellubi/bonobo

Roadmap

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
  • 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
  • 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