Skip to content

Commit d8b7203

Browse files
authored
Release v0.2.0 (#272)
1 parent 4773b6c commit d8b7203

File tree

11 files changed

+80
-41
lines changed

11 files changed

+80
-41
lines changed

CHANGELOG.md

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,61 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99
### Changed
10+
11+
### Added
12+
13+
### Fixes
14+
15+
## [0.2.0] - 2023-01-10
16+
### Changed
1017
- *BREAKING:* Refactors the AST
1118
- Removes Location from the AST, replacing with a 'node id' that gives the AST node identity; the id can be used to retrieve Location
1219
- Removes redundancies and extraneous nesting
20+
- Refactor some AST nodes (including `FROM`, `WHERE`, and `HAVING` clauses) for better visitation
21+
- Refactor `FromSource` to not wrap in `AstNode`
1322

1423
### Added
15-
- Adds the following functionalities to PartiQL Playground:
16-
- Moves the project to a Node.js project
17-
- Adds the capability for exporting the playground session on client side to be able to get fetched from another playground windows.
18-
- Adds a REST API and exposes /parse for parsing the query over http request.
19-
- Containerization using Docker.
20-
21-
### Fixes
22-
- Fixes the bug with AST graph PAN and ZOOM—before this change the pan and zoom was quite flaky and very hard to work with.
23-
- Fixes the version value for the session and JSON output by ensuring it gets picked from the selected version in the UI.
24+
- Adds end-to-end PartiQL query evaluation with the following supported features
25+
- SELECT-FROM-WHERE
26+
- LATERAL LEFT, INNER, CROSS JOINs
27+
- UNPIVOT
28+
- SELECT VALUE
29+
- Query expressions
30+
- List, Bag, Tuple constructors
31+
- Path expressions (wildcard & unpivot path are not yet supported)
32+
- Subquery (supported in logical and eval plan; not yet in AST to plan conversion)
33+
- DISTINCT
34+
- Variable references
35+
- Literals
36+
- Arithmetic operators (+, -, *, /, %)
37+
- Logical operators (AND, OR, NOT)
38+
- Equality operators (= , !=)
39+
- Comparison operators (<, >, <=, >=)
40+
- IS [NOT] MISSING, IS [NOT] NULL
41+
- IN
42+
- BETWEEN
43+
- LIKE
44+
- Searched and simple case expressions
45+
- COALESCE and NULLIF
46+
- CONCAT
47+
- And the following functions
48+
- LOWER
49+
- UPPER
50+
- CHARACTER_LENGTH
51+
- LTRIM
52+
- BTRIM
53+
- RTRIM
54+
- SUBSTRING
55+
- EXISTS
56+
- Adds `Visit` and `Visitor` traits for visiting AST
57+
- Add AST node `Visit` impls via `proc_macro`s
58+
- Adds PartiQL `Value`, an in-memory representation of PartiQL values
59+
- Supports PartiQL values other than `DATE`, `TIME`, s-expressions
60+
- Supports basic arithmetic, logical, equality, and comparison operators
61+
- Supports partiql parsing of Ion into `Value`
62+
- Defines logical plan and evaluation DAG
63+
- AST lowering to logical plan with name resolution
64+
- `partiql-conformance-tests` support for parsing and running evaluation tests from `partiql-tests`
2465

2566
## [0.1.0] - 2022-08-05
2667
### Added

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
authors = ["PartiQL Team <[email protected]>"]
33
homepage = "https://github.com/partiql/partiql-lang-rust"
44
repository = "https://github.com/partiql/partiql-lang-rust"
5-
version = "0.1.0"
5+
version = "0.2.0"
66
edition = "2021"
77

88
[workspace]
99

1010
members = [
1111
"partiql",
1212
"partiql-ast",
13+
"partiql-ast/partiql-ast-macros",
1314
"partiql-conformance-tests",
1415
"partiql-conformance-test-generator",
1516
"partiql-source-map",

README.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ to be the crate that exports all the relevant `partiql-*` sub-crate functionalit
1616
to make applications needing only some sub-component of the PartiQL implementation possible (e.g. an application
1717
that only requires the PartiQL parser can depend on `partiql-parser` directly).
1818

19-
Due to the lack of namespacing in [crates.io][crates], we have published `0.0.0` versions for the sub-crates we know
20-
we will need. A crate with a version `0.1.0` or higher, should have real, albeit potentially very experimental and/or
21-
early implementations.
22-
2319
## Development
2420
This project uses a [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules) to pull in
2521
[partiql-tests](https://github.com/partiql/partiql-tests). The easiest way to pull everything in is to clone the

partiql-ast/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ serde = [
3939

4040
[dependencies.partiql-ast-macros]
4141
path = "partiql-ast-macros"
42-
version = "*"
42+
version = "0.2.*"

partiql-conformance-test-generator/Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
[package]
22
name = "partiql-conformance-test-generator"
3-
authors = ["PartiQL Team <[email protected]>"]
43
description = "PartiQL conformance test generator"
5-
homepage = "https://github.com/partiql/partiql-lang-rust"
6-
repository = "https://github.com/partiql/partiql-lang-rust"
4+
authors.workspace = true
5+
homepage.workspace = true
6+
repository.workspace = true
77
license = "Apache-2.0"
88
readme = "../README.md"
99
keywords = ["sql", "parser", "conformance", "codegen", "tests"]
@@ -14,8 +14,8 @@ exclude = [
1414
"**/.travis.yml",
1515
"**/.appveyor.yml",
1616
]
17-
version = "0.1.0"
18-
edition = "2021"
17+
version.workspace = true
18+
edition.workspace = true
1919

2020
# TODO: fill in other details
2121

partiql-conformance-tests/Cargo.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ required-features = ["report_tool"]
2929

3030
[build-dependencies]
3131
miette = { version ="5.*", features = ["fancy"] }
32-
partiql-conformance-test-generator = { path = "../partiql-conformance-test-generator" }
32+
partiql-conformance-test-generator = { path = "../partiql-conformance-test-generator", version = "0.2.*" }
3333

3434
[dependencies]
35-
partiql-parser = { path = "../partiql-parser" }
36-
partiql-ast = { path = "../partiql-ast" }
37-
partiql-logical-planner = { path = "../partiql-logical-planner" }
38-
partiql-logical = { path = "../partiql-logical" }
39-
partiql-value = { path = "../partiql-value" }
40-
partiql-eval = { path = "../partiql-eval" }
35+
partiql-parser = { path = "../partiql-parser", version = "0.2.*" }
36+
partiql-ast = { path = "../partiql-ast", version = "0.2.*" }
37+
partiql-logical-planner = { path = "../partiql-logical-planner", version = "0.2.*" }
38+
partiql-logical = { path = "../partiql-logical", version = "0.2.*" }
39+
partiql-value = { path = "../partiql-value", version = "0.2.*" }
40+
partiql-eval = { path = "../partiql-eval", version = "0.2.*" }
4141

4242
ion-rs = "0.14"
4343

partiql-eval/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ edition.workspace = true
2020
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
2121

2222
[dependencies]
23-
partiql-logical = { path = "../partiql-logical" }
24-
partiql-value = { path = "../partiql-value" }
23+
partiql-logical = { path = "../partiql-logical", version = "0.2.*" }
24+
partiql-value = { path = "../partiql-value", version = "0.2.*" }
2525
petgraph = "0.6.*"
2626
ordered-float = "3.*"
2727
itertools = "0.10.*"

partiql-logical-planner/Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ version.workspace = true
1818
edition.workspace = true
1919

2020
[dependencies]
21-
partiql-value = { path = "../partiql-value" }
22-
partiql-logical = { path = "../partiql-logical" }
23-
partiql-ast = { path = "../partiql-ast" }
24-
partiql-parser = { path = "../partiql-parser" }
21+
partiql-value = { path = "../partiql-value", version = "0.2.*" }
22+
partiql-logical = { path = "../partiql-logical", version = "0.2.*" }
23+
partiql-ast = { path = "../partiql-ast", version = "0.2.*" }
24+
partiql-parser = { path = "../partiql-parser", version = "0.2.*" }
2525
ordered-float = "3.*"
2626
itertools = "0.10.*"
2727
unicase = "2.*"
@@ -32,4 +32,4 @@ fnv = "1"
3232
assert_matches = "1.5.*"
3333

3434
[dev-dependencies]
35-
partiql-eval = { path = "../partiql-eval" }
35+
partiql-eval = { path = "../partiql-eval", version = "0.2.*" }

partiql-logical/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ edition.workspace = true
2020
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
2121

2222
[dependencies]
23-
partiql-value = { path = "../partiql-value" }
23+
partiql-value = { path = "../partiql-value", version = "0.2.*" }
2424
ordered-float = "3.*"
2525
itertools = "0.10.*"
2626
unicase = "2.*"

partiql-parser/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ edition.workspace = true
2323
lalrpop = "0.19.8"
2424

2525
[dependencies]
26-
partiql-ast = { path = "../partiql-ast", version = "0.1.0" }
27-
partiql-source-map = { path = "../partiql-source-map", version = "0.1.0" }
26+
partiql-ast = { path = "../partiql-ast", version = "0.2.*" }
27+
partiql-source-map = { path = "../partiql-source-map", version = "0.2.*" }
2828

2929
thiserror = "~1.0.24"
3030

0 commit comments

Comments
 (0)