Skip to content

v0.6.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@alancai98 alancai98 released this 01 Nov 20:29
· 47 commits to main since this release
6ef3177

The main highlights of this release:

  • >90% conformance tests passing
  • Typing of simple SFW queries
  • Initial steps to move builtin functions into the catalog
  • Strict evaluation mode
  • Performance improvements related to GROUP BY and aggregation evaluation

Changed

  • BREAKING: partiql-value: BindingsName changed to hold Cow<str> rather than String
  • BREAKING: partiql-eval: Construction of expression evaluators changed to separate binding from evaluation of expression. & implement strict eval
  • BREAKING: partiql-value: Value trait's is_null_or_missing renamed to is_absent
  • BREAKING: partiql-value: Value trait's coerce_to_tuple, coerece_to_bag, and coerce_to_list methods renamed to coerce_into_tuple, coerece_into_bag, and coerece_into_list.
  • BREAKING: partiql-value: Tuple's pairs and into_pairs changed to return concrete Iterator types.
  • BREAKING: partiql-eval: EvaluatorPlanner construction now takes an EvaluationMode parameter.
  • BREAKING: partiql-eval: like_to_re_pattern is no longer public.
  • BREAKING: partiql-value: Box Decimals in Value to assure Value fits in 16 bytes.
  • BREAKING: partiql-logical-planner: moves NameResolver to partiql-ast-passes
  • BREAKING: partiql-value: removes partiql from value macro_rules; e.g. partiql_bag renames to bag.
  • BREAKING: partiql-ast: changed modeling of Query and SetExpr nodes to support ORDER BY, LIMIT, OFFSET in children of set operators
    • Affects the AST and visitor
  • BREAKING: partiql-ast: rename of SetExpr to BagOpExpr and SetOp to BagOp
    • Affects the AST and visitor
  • BREAKING: partiql-parser: Parsed struct's ast field is now an ast::AstNode<ast::TopLevelQuery>
  • BREAKING: partiql-eval: Evaluable trait's update_input fn now also takes in an EvalContext
  • BREAKING: partiql-logical: changed modeling of Project exprs to be a Vec<(String, ValueExpr)> rather than a HashMap<String, ValueExpr> to support multiple project items with the same alias
  • BREAKING: partiql-logical: changed modeling of VarRef to include a VarRefType to indicate whether to do a local vs global binding lookup

Added

  • Strict mode evaluation partial support added.
  • Add interface for STRICT mode evalution to EvaluatorPlanner.
  • Add ability for partiql-extension-ion extension encoding/decoding of Value to/from Ion Element
  • Add partiql-types crate that includes data models for PartiQL Types.
  • Add partiql_ast_passes::static_typer for type annotating the AST.
  • Add ability to parse ORDER BY, LIMIT, OFFSET in children of set operators
  • Add OUTER bag operator (OUTER UNION, OUTER INTERSECT, OUTER EXCEPT) implementation
  • Add experimental partiql_logical_planner::typer for typing PartiQL queries with the initial support for simple SFW queries with SELECT and FROM clauses only with no operators, JOINs, etc.
  • Add NullSortedValue to specify ordering null or missing values partiql_value::Values before or after all other values
  • Implements the aggregation functions ANY, SOME, EVERY and their COLL_ versions
  • Add COUNT(*) implementation
  • Add to_vec method to List and Bag to convert to a Vec

Fixed

  • Fixes parsing of multiple consecutive path wildcards (e.g. a[*][*][*]), unpivot (e.g. a.*.*.*), and path expressions (e.g. a[1 + 2][3 + 4][5 + 6])—previously these would not parse correctly.
  • partiql-parser set quantifier for bag operators fixed to DISTINCT
  • partiql-parser set quantifier for bag operators fixed to be DISTINCT when unspecified
  • partiql-logical-planner add error for when a HAVING is included without GROUP BY
  • Fixes variable resolution lookup order and excessive lookups
  • Fixes variable resolution of some ORDER BY variables
  • Fixes nested list/bag/tuple type ordering for when ASC NULLS LAST and DESC NULLS FIRST are specified
  • partiql-value fix deep equality of list, bags, and tuples
  • Fixes bug when using multiple aggregations without a GROUP BY
  • Performance improvements to grouping/evaluation