Releases: partiql/partiql-lang-rust
Releases · partiql/partiql-lang-rust
v0.4.1
v0.4.0
Changed
- BREAKING: partiql-eval: modifies visibility of types implementing
EvalExpr
andEvaluable
- BREAKING: removed
from_ion
method onValue
- BREAKING: partiql-ast:
visit
fn returns apartiql-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 ofResult<logical::LogicalPlan<logical::BindingsOp>, LoweringError>
rather than alogical::LogicalPlan<logical::BindingsOp>
- BREAKING: partiql-eval: modifies
compile(&mut self, plan: &LogicalPlan<BindingsOp>)
to return a Result type ofResult<EvalPlan, PlanErr>
rather than anEvalPlan
- This is part of an effort to replace
panic
s withResult
s
- This is part of an effort to replace
- BREAKING: partiql-logical-planner: Adds a
LogicalPlanner
to encapsulate thelower
method - BREAKING: partiql-eval: Adds a
EvaluatorPlanner
now requires aCatalog
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/decodingValue
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 experimentalCatalog
interface and implementation - Implements the
COLL_*
functions --COLL_AVG
,COLL_COUNT
,COLL_MAX
,COLL_MIN
,COLL_SUM
Fixes
- Fix parsing of
EXTRACT
datetime partsYEAR
,TIMEZONE_HOUR
, andTIMEZONE_MINUTE
- Fix logical plan to eval plan conversion for
EvalOrderBySortSpec
with argumentsDESC
andNULLS LAST
- Fix parsing of
EXTRACT
to allow keywords after theFROM
v0.3.0
Changed
EvalExpr.evaluate
function now returns a Cow ofValue
Evaluable
trait'sget_vars
function returns by ref- Refactor of
partiql-eval
crate- Operators previously implementing
Evaluable
(e.g.EvalScan
,EvalFilter
) are under theeval::evaluable
module - Expressions previously implementing
EvalExpr
(e.g.EvalBinOpExpr
,EvalLitExpr
) are under theeval::expr
module
- Operators previously implementing
- 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 topartiql-value
andpartiql-logical
withSerialize
andDeserialize
traits- Adds
Display
forLogicalPlan
- Expose
partiql_value::parse_ion
as a public API - Adds some convenience methods on
Value
- Add
Extend
implementations forList
andBag
- Add methods to iterate a
Tuple
's values without zipping its names - Allow
collect()
into aTuple
with anyInto<String>
- Add
- Parse
OUTER UNION
/INTERSECT
/EXCEPT
- Parse
WITH
clause - Implements
LIMIT
andOFFSET
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
clone
s 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 inGROUP
clause - Fix
JOIN
parsing by defaulting toINNER
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
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
, andHAVING
clauses) for better visitation - Refactor
FromSource
to not wrap inAstNode
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
andVisitor
traits for visiting AST - Add AST node
Visit
impls viaproc_macro
s - 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
- Supports PartiQL values other than
- Defines logical plan and evaluation DAG
- AST lowering to logical plan with name resolution
partiql-conformance-tests
support for parsing and running evaluation tests frompartiql-tests
v0.1.0
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