Skip to content

v0.2.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@alancai98 alancai98 released this 11 Jan 01:37
· 217 commits to main since this release
d8b7203

This release is highlighted by the addition of end-to-end PartiQL query evaluation. This release introduces a logical plan and evaluation API along with AST lowering to logical plan with name resolution. There are some breaking changes to the parsed AST.

Changed

  • BREAKING: Refactors the AST
    • Removes Location from the AST, replacing with a 'node id' that gives the AST node identity; the id can be used to retrieve Location
    • Removes redundancies and extraneous nesting
    • Refactor some AST nodes (including FROM, WHERE, and HAVING clauses) for better visitation
    • Refactor FromSource to not wrap in AstNode

Added

  • Adds end-to-end PartiQL query evaluation with the following supported features
    • SELECT-FROM-WHERE
    • LATERAL LEFT, INNER, CROSS JOINs
    • UNPIVOT
    • SELECT VALUE
    • Query expressions
    • List, Bag, Tuple constructors
    • Path expressions (wildcard & unpivot path are not yet supported)
    • Subquery (supported in logical and eval plan; not yet in AST to plan conversion)
    • DISTINCT
    • Variable references
    • Literals
    • Arithmetic operators (+, -, *, /, %)
    • Logical operators (AND, OR, NOT)
    • Equality operators (= , !=)
    • Comparison operators (<, >, <=, >=)
    • IS [NOT] MISSING, IS [NOT] NULL
    • IN
    • BETWEEN
    • LIKE
    • Searched and simple case expressions
    • COALESCE and NULLIF
    • CONCAT
    • And the following functions
      • LOWER
      • UPPER
      • CHARACTER_LENGTH
      • LTRIM
      • BTRIM
      • RTRIM
      • SUBSTRING
      • EXISTS
  • Adds Visit and Visitor traits for visiting AST
  • Add AST node Visit impls via proc_macros
  • Adds PartiQL Value, an in-memory representation of PartiQL values
    • Supports PartiQL values other than DATE, TIME, s-expressions
    • Supports basic arithmetic, logical, equality, and comparison operators
    • Supports partiql parsing of Ion into Value
  • Defines logical plan and evaluation DAG
  • AST lowering to logical plan with name resolution
  • partiql-conformance-tests support for parsing and running evaluation tests from partiql-tests