Skip to content

Releases: partiql/partiql-lang-rust

v0.4.1

25 May 22:58
37bce5e
Compare
Choose a tag to compare
v0.4.1 Pre-release
Pre-release

Changed

  • partiql-extension-ion-functions : Made IonExtension pub

Added

Fixes

v0.4.0

25 May 05:40
b2d86db
Compare
Choose a tag to compare
v0.4.0 Pre-release
Pre-release

Changed

  • BREAKING: partiql-eval: modifies visibility of types implementing EvalExpr and Evaluable
  • BREAKING: removed from_ion method on Value
  • BREAKING: partiql-ast: visit fn returns a partiql-ast::Recurse type to indicate if visitation of children nodes should continue
  • BREAKING: partiql-logical-planner: modifies lower(parsed: &Parsed) to return a Result type of Result<logical::LogicalPlan<logical::BindingsOp>, LoweringError> rather than a logical::LogicalPlan<logical::BindingsOp>
  • BREAKING: partiql-eval: modifies compile(&mut self, plan: &LogicalPlan<BindingsOp>) to return a Result type of Result<EvalPlan, PlanErr> rather than an EvalPlan
    • This is part of an effort to replace panics with Results
  • BREAKING: partiql-logical-planner: Adds a LogicalPlanner to encapsulate the lower method
  • BREAKING: partiql-eval: Adds a EvaluatorPlanner now requires a Catalog to be supplied at initialization
  • BREAKING: partiql-logical-planner: CallDef and related types moved to partiql-catalog

Added

  • Implements built-in function EXTRACT
  • Add partiql-extension-ion extension for encoding/decoding Value to/from Ion data
  • Add partiql-extension-ion-functions extension which contains an extension function for reading from an Ion file
  • Add partiql-catalog including an experimental Catalog interface and implementation
  • Implements the COLL_* functions -- COLL_AVG, COLL_COUNT, COLL_MAX, COLL_MIN, COLL_SUM

Fixes

  • Fix parsing of EXTRACT datetime parts YEAR, TIMEZONE_HOUR, and TIMEZONE_MINUTE
  • Fix logical plan to eval plan conversion for EvalOrderBySortSpec with arguments DESC and NULLS LAST
  • Fix parsing of EXTRACT to allow keywords after the FROM

v0.3.0

12 Apr 18:59
2cb413a
Compare
Choose a tag to compare
v0.3.0 Pre-release
Pre-release

Changed

  • EvalExpr.evaluate function now returns a Cow of Value
  • Evaluable trait's get_vars function returns by ref
  • Refactor of partiql-eval crate
    • Operators previously implementing Evaluable (e.g. EvalScan, EvalFilter) are under the eval::evaluable module
    • Expressions previously implementing EvalExpr (e.g. EvalBinOpExpr, EvalLitExpr) are under the eval::expr module
  • Refactor CallAgg partiql-ast node

Added

  • Adds some benchmarks for parsing, compiling, planning, & evaluation
  • Implements more built-in functions -- POSITION, OCTET_LEN, BIT_LEN, ABS, MOD, CARDINALITY, OVERLAY
  • Implements PIVOT operator in evaluator
  • Implements LIKE for non-string, non-literals
  • serde feature to partiql-value and partiql-logical with Serialize and Deserialize traits
  • Adds Display for LogicalPlan
  • Expose partiql_value::parse_ion as a public API
  • Adds some convenience methods on Value
    • Add Extend implementations for List and Bag
    • Add methods to iterate a Tuple's values without zipping its names
    • Allow collect() into a Tuple with any Into<String>
  • Parse OUTER UNION/INTERSECT/EXCEPT
  • Parse WITH clause
  • Implements LIMIT and OFFSET operators in evaluator
  • DATE/TIME/TIMESTAMP values
  • Parse TABLE <id> references
  • Implements GROUP BY operator in evaluator
  • Implements HAVING operator in evaluator
  • Implements ORDER BY operator in evaluator
  • Implements SQL aggregation functions (AVG, COUNT, MAX, MIN, SUM) in evaluator

Fixes

  • Some performance improvements from removing extraneous clones and tweaking buffer sizes
  • Fix off by one error when checking preconditions to lower join ON
  • Recognize aggregate fn names in parser
  • Pass-through comments when processing special forms
  • Make BY <x> optional in GROUP clause
  • Fix JOIN parsing by defaulting to INNER and allowing elision of keywords
  • Allow un-parenthesized subquery as the only argument of a function in parser
  • Fix handling of List/Bag/Tuple in keyword argument preprocessing in parser
  • Fixes Tuple value duplicate equality and hashing
  • Properly skip comments when parsing

v0.2.0

11 Jan 01:37
d8b7203
Compare
Choose a tag to compare
v0.2.0 Pre-release
Pre-release

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

v0.1.0

05 Aug 21:55
b8876d9
Compare
Choose a tag to compare
v0.1.0 Pre-release
Pre-release

This release highlights a PartiQL Parser API that has been tested using Syntax success and fail tests that are defined in PartiQL conformance test suite; other highlights are, PartiQL CLI REPL and query visualizer, and an experimental PartiQL web playground.

As this is the first minor version after v0.0.0, it does not include any breaking changes.

Added

  • Lexer & Parser for the majority of PartiQL query capabilities—see syntax success
    and fail tests for more details.
  • AST for the currently parsed subset of PartiQL
  • Tracking of locations in source text for ASTs and Errors
  • Parser fuzz tester
  • Conformance tests via test generation from partiql-tests
  • PartiQL Playground proof of concept (POC)
  • PartiQL CLI with REPL and query visualization features

Full Changelog: https://github.com/partiql/partiql-lang-rust/commits/v0.1.0