You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All notable changes to this project will be documented in this file.
3
+
4
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project aims to adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
+
6
+
Given that the parser produces a typed AST, any changes to the AST will technically be breaking and thus will result in a `0.(N+1)` version. We document changes that break via addition as "Added".
7
+
8
+
## [Unreleased]
9
+
Nothing here yet! Check https://github.com/andygrove/sqlparser-rs/commits/master for undocumented changes.
10
+
11
+
## [0.4.0] - 2019-07-02
12
+
This release brings us closer to SQL-92 support, mainly thanks to the improvements contributed back from @MaterializeInc's fork and other work by @benesch.
13
+
14
+
### Changed
15
+
- Remove "SQL" from type and enum variant names, `SQLType` -> `DataType`, remove "sql" prefix from module names (#105, #122)
16
+
- Rename `ASTNode` -> `Expr` (#119)
17
+
- Improve consistency of binary/unary op nodes (#112):
18
+
-`ASTNode::SQLBinaryExpr` is now `Expr::BinaryOp` and `ASTNode::SQLUnary` is `Expr::UnaryOp`;
19
+
- The `op: SQLOperator` field is now either a `BinaryOperator` or an `UnaryOperator`.
20
+
- Change the representation of JOINs to match the standard (#109): `SQLSelect`'s `relation` and `joins` are replaced with `from: Vec<TableWithJoins>`. Before this change `FROM foo NATURAL JOIN bar, baz` was represented as "foo" as the `relation` followed by two joins (`Inner(Natural)` and `Implicit`); now it's two `TableWithJoins` (`foo NATURAL JOIN bar` and `baz`).
21
+
- Extract a `SQLFunction` struct (#89)
22
+
- Replace `Option<Vec<T>>` with `Vec<T>` in the AST structs (#73)
23
+
- Change `Value::Long()` to be unsigned, use u64 consistently (#65)
24
+
25
+
### Added
26
+
- Infra:
27
+
- Implement `fmt::Display` on AST nodes (#124) - thanks @vemoo!
28
+
- Implement `Hash` (#88) and `Eq` (#123) on all AST nodes
29
+
- Implement `std::error::Error` for `ParserError` (#72)
30
+
- Handle Windows line-breaks (#54)
31
+
- Expressions:
32
+
- Support `INTERVAL` literals (#103)
33
+
- Support `DATE` / `TIME` / `TIMESTAMP` literals (#99)
34
+
- Support `EXTRACT` (#96)
35
+
- Support `X'hex value'` literals (#95)
36
+
- Support `EXISTS` subqueries (#90)
37
+
- Support nested expressions in `BETWEEN` (#80)
38
+
- Support `COUNT(DISTINCT x)` and similar (#77)
39
+
- Support `CASE operand WHEN expected_value THEN ..` and table-valued functions (#59)
40
+
- Support analytic (window) functions (`OVER` clause) (#50)
41
+
- Queries / DML:
42
+
- Support nested joins (#100) and derived tables with set operations (#111)
43
+
- Support `UPDATE` statements (#97)
44
+
- Support `INSERT INTO foo SELECT * FROM bar` and `FROM VALUES (...)` (#91)
45
+
- Support `SELECT ALL` (#76)
46
+
- Add `FETCH` and `OFFSET` support, and `LATERAL` (#69) - thanks @thomas-jeepe!
47
+
- Support `COLLATE`, optional column list in CTEs (#64)
48
+
- DDL/TCL:
49
+
- Support `START/SET/COMMIT/ROLLBACK TRANSACTION` (#106) - thanks @SamuelMarks!
50
+
- Parse column constraints in any order (#93)
51
+
- Parse `DECIMAL` and `DEC` aliases for `NUMERIC` type (#92)
52
+
- Support `DROP [TABLE|VIEW]` (#75)
53
+
- Support arbitrary `WITH` options for `CREATE [TABLE|VIEW]` (#74)
54
+
- Support constraints in `CREATE TABLE` (#65)
55
+
- Add basic MSSQL dialect (#61) and some MSSQL-specific features:
56
+
-`CROSS`/`OUTER APPLY` (#120)
57
+
- MSSQL identifier and alias parsing rules (#66)
58
+
-`WITH` hints (#59)
59
+
60
+
### Fixed
61
+
- Report an error for `SELECT * FROM a OUTER JOIN b` instead of parsing `OUTER` as an alias (#118)
62
+
- Fix the precedence of `NOT LIKE` (#82) and unary `NOT` (#107)
63
+
- Do not panic when `NOT` is not followed by an expected keyword (#71)
64
+
successfully instead of returning a parse error - thanks @ivanceras! (#67) - and similar fixes for queries with no `FROM` (#116)
65
+
- Fix issues with `ALTER TABLE ADD CONSTRAINT` parsing (#65)
66
+
- Serialize the "not equals" operator as `<>` instead of `!=` (#64)
67
+
- Remove dependencies on `uuid` (#59) and `chrono` (#61)
68
+
- Make `SELECT` query with `LIMIT` clause but no `WHERE` parse - Fix incorrect behavior of `ASTNode::SQLQualifiedWildcard::to_string()` (returned `foo*` instead of `foo.*`) - thanks @thomas-jeepe! (#52)
69
+
70
+
## [0.3.1] - 2019-04-20
71
+
### Added
72
+
- Extended `SQLStatement::SQLCreateTable` to support Hive's EXTERNAL TABLES (`CREATE EXTERNAL TABLE .. STORED AS .. LOCATION '..'`) - thanks @zhzy0077! (#46)
73
+
- Parse `SELECT DISTINCT` to `SQLSelect::distinct` (#49)
74
+
75
+
## [0.3.0] - 2019-04-03
76
+
### Changed
77
+
This release includes major changes to the AST structs to add a number of features, as described in #37 and #43. In particular:
78
+
-`ASTNode` variants that represent statements were extracted from `ASTNode` into a separate `SQLStatement` enum;
79
+
-`Parser::parse_sql` now returns a `Vec` of parsed statements.
80
+
-`ASTNode` now represents an expression (renamed to `Expr` in 0.4.0)
81
+
- The query representation (formerly `ASTNode::SQLSelect`) became more complicated to support:
82
+
-`WITH` and `UNION`/`EXCEPT`/`INTERSECT` (via `SQLQuery`, `Cte`, and `SQLSetExpr`),
83
+
- aliases and qualified wildcards in `SELECT` (via `SQLSelectItem`),
84
+
- and aliases in `FROM`/`JOIN` (via `TableFactor`).
85
+
- A new `SQLObjectName` struct is used instead of `String` or `ASTNode::SQLCompoundIdentifier` - for objects like tables, custom types, etc.
86
+
- Added support for "delimited identifiers" and made keywords context-specific (thus accepting them as valid identifiers in most contexts) - **this caused a regression in parsing `SELECT .. FROM .. LIMIT ..` (#67), fixed in 0.4.0**
87
+
88
+
### Added
89
+
Other than the changes listed above, some less intrusive additions include:
90
+
- Support `CREATE [MATERIALIZED] VIEW` statement
91
+
- Support `IN`, `BETWEEN`, unary +/- in epressions
92
+
- Support `CHAR` data type and `NUMERIC` not followed by `(p,s)`.
93
+
- Support national string literals (`N'...'`)
94
+
95
+
## [0.2.4] - 2019-03-08
96
+
Same as 0.2.2.
97
+
98
+
## [0.2.3] - 2019-03-08 [YANKED]
99
+
100
+
## [0.2.2] - 2019-03-08
101
+
### Changed
102
+
- Removed `Value::String`, `Value::DoubleQuotedString`, and `Token::String`, making
103
+
-`'...'` parse as a string literal (`Value::SingleQuotedString`), and
104
+
-`"..."` fail to parse until version 0.3.0 (#36)
105
+
106
+
## [0.2.1] - 2019-01-13
107
+
We don't have a changelog for the changes made in 2018, but thanks to @crw5996, @cswinter, @fredrikroos, @ivanceras, @nickolay, @virattara for their contributions in the early stages of the project!
0 commit comments