Skip to content

Bonobo is a Substrait/Arrow-native query engine written in Go. Its purpose is to help create, manipulate, and delegate plans for execution on existing engines.

License

Notifications You must be signed in to change notification settings

joellubi/bonobo

Repository files navigation

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

About

Bonobo is a Substrait/Arrow-native query engine written in Go. Its purpose is to help create, manipulate, and delegate plans for execution on existing engines.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages