Nickolay Ponomarev
6dfe7c2413
reapply the "Rework keyword/identifier parsing" PR
2019-04-02 09:15:15 +03:00
Andy Grove
bebaec4c79
Merge pull request #45 from andygrove/update_gitter_badge
...
Update badge based on gitter email
2019-03-31 22:54:06 -06:00
Andy Grove
eee1b3a2bd
Update badge based on gitter email
2019-03-31 22:53:08 -06:00
Nickolay Ponomarev
5ba9912a9d
Merge remote-tracking branch 'upstream/master'
2019-03-08 17:29:54 +03:00
Andy Grove
aa1f0faad4
(cargo-release) start next development iteration 0.2.5-alpha.0
2019-03-08 07:28:37 -07:00
Andy Grove
30de48c840
(cargo-release) version 0.2.4
2019-03-08 07:28:29 -07:00
Andy Grove
4a355e6ddc
Merge pull request #42 from andygrove/revert-37-keywords
...
Revert "Rework keyword/identifier parsing"
2019-03-08 07:28:07 -07:00
Andy Grove
43f4c6875f
Revert "Rework keyword/identifier parsing"
2019-03-08 07:27:27 -07:00
Andy Grove
391c53d5c9
(cargo-release) start next development iteration 0.2.4-alpha.0
2019-03-08 07:20:19 -07:00
Andy Grove
6580bf10c0
(cargo-release) version 0.2.3
2019-03-08 07:20:08 -07:00
Andy Grove
75e2c0a64f
Merge pull request #37 from nickolay/keywords
...
Rework keyword/identifier parsing
2019-03-08 07:19:34 -07:00
Andy Grove
7c9f62962d
Merge branch 'master' into keywords
2019-03-08 06:24:24 -07:00
Andy Grove
8c1d6a67fa
(cargo-release) start next development iteration 0.2.3-alpha.0
2019-03-08 06:15:48 -07:00
Andy Grove
15704f1fbe
(cargo-release) version 0.2.2
2019-03-08 06:15:37 -07:00
Andy Grove
73f55fe1bb
Merge pull request #36 from nickolay/strings
...
Clean up string-related variants in Token and Value
2019-03-08 06:14:59 -07:00
Andy Grove
ff897b9086
Merge pull request #38 from nickolay/remove-duplicate-tests
...
Remove sqlparser_generic.rs/sqlparser_postgres.rs duplication
2019-03-08 06:09:25 -07:00
Nickolay Ponomarev
0621f8d43c
Merge https://github.com/nickolay/sqlparser-rs/pull/1 from benesch/materialized
2019-03-08 15:49:53 +03:00
Nickolay Ponomarev
f30ab89ad2
Re-run cargo fmt
2019-03-08 15:46:40 +03:00
Nikhil Benesch
23a0fc79f5
Support CREATE MATERIALIZED VIEW
2019-03-07 13:14:33 -05:00
Nickolay Ponomarev
52e0f55b6f
Support UNION/EXCEPT/INTERSECT
2019-02-11 05:14:36 +03:00
Nickolay Ponomarev
533775c0da
Support CHAR synonym for CHARACTER
...
https://jakewheat.github.io/sql-overview/sql-2011-foundation-grammar.html#character-string-type
2019-02-11 05:14:34 +03:00
Nickolay Ponomarev
23a0d032bd
Support NUMERIC without precision or scale
...
https://jakewheat.github.io/sql-overview/sql-2011-foundation-grammar.html#exact-numeric-type
2019-02-11 05:13:48 +03:00
Nickolay Ponomarev
54c9ca8619
Support unary + / -
2019-02-11 05:13:48 +03:00
Nickolay Ponomarev
786b1cf18a
Support BETWEEN
2019-02-11 05:13:48 +03:00
Nickolay Ponomarev
264319347d
Support IN
2019-02-11 05:13:48 +03:00
Nickolay Ponomarev
bed03abe44
Support AS
and qualified wildcards in SELECT
2019-02-11 05:13:48 +03:00
Nickolay Ponomarev
bf0c07bb1b
Support basic CTEs (WITH
)
...
Some unsupported features are noted as TODOs.
2019-02-11 05:13:48 +03:00
Nickolay Ponomarev
f958e9d3cf
TBD fixup multiline comment tokenization
2019-02-11 05:13:48 +03:00
Nickolay Ponomarev
028c613c3f
Support comments in the tokenizer
2019-02-07 05:34:38 +03:00
Nickolay Ponomarev
35dd9342e2
Support national string literals (N'...')
...
Widely used in MS SQL and specified in ANSI.
2019-02-07 05:34:33 +03:00
Nickolay Ponomarev
b9f4b503b6
Support different quoting styles for delimited identifiers
...
The dialect information is from https://en.wikibooks.org/wiki/SQL_Dialects_Reference/Data_structure_definition/Delimited_identifiers
2019-02-07 05:34:29 +03:00
Nickolay Ponomarev
b3693bfa63
Simplify quoted identifier tokenization
2019-02-07 05:34:26 +03:00
Nickolay Ponomarev
2e9da53ed3
Small CLI app that can be used to test parsing an external SQL file
2019-02-07 05:34:16 +03:00
Nickolay Ponomarev
577e634f3c
Update README to the recent changes in the AST
2019-02-07 05:34:16 +03:00
Nickolay Ponomarev
0c0cbcaff4
Support basic CREATE VIEW
2019-02-07 05:34:12 +03:00
Nickolay Ponomarev
346d1ff2e4
Improve error messages in parse_create()
...
By not swallowing the Err from parse_data_type().
Also switch to `match` to enable parsing table-level constraints in this
loop later.
2019-02-07 05:34:09 +03:00
Nickolay Ponomarev
a0f625b949
Simplify parse_create() a little
...
Don't need the duplicate `columns.push()` + we advance the tokenizer,
so no need to peek first.
2019-02-07 05:34:06 +03:00
Nickolay Ponomarev
89602dc044
Fix a typo in parse_value error message
2019-02-07 05:34:03 +03:00
Nickolay Ponomarev
b716ffb937
Simplify JOIN USING (columns)
...
...by reusing `parse_column_names` instead of extracting identifiers
out of the `parse_expr_list`s result.
2019-02-07 05:34:00 +03:00
Nickolay Ponomarev
05a70a358a
Assert when an unknown keyword was passed to parse_keyword()
...
This happens all the time when I forget to check that the keyword I wanted
to use is actually listed in keywords.rs, this should help with debugging.
2019-02-07 05:33:57 +03:00
Nickolay Ponomarev
6b107065ac
Switch some tests to verified_select_stmt
...
(the tests affected by "unboxing" in the previous commits.)
2019-02-07 05:33:54 +03:00
Nickolay Ponomarev
e3b981a0e2
Don't Box<ASTNode> in SQLSelect
...
Instead change ASTNode::SQLSubquery to be Box<SQLSelect>
2019-02-07 05:33:51 +03:00
Nickolay Ponomarev
c5bbfc33fd
Don't Box<ASTNode> in SQLStatement
...
This used to be needed when it was a variant in the ASTNode enum itself.
2019-02-07 05:33:46 +03:00
Nickolay Ponomarev
3619e89e9c
Remove Box<> from SQLOrderByExpr
...
It was probably copied from somewhere else when most types were variants
in ASTNode, and needed Box<> to prevent recursion in the ASTNode definition.
2019-02-07 05:33:43 +03:00
Nickolay Ponomarev
9967031cba
Move TableFactor to be a separate enum
...
ASTNode can now be renamed SQLExpression, as it represents a node in
the "expression" part of the AST -- other nodes have their own types.
2019-02-07 05:33:41 +03:00
Nickolay Ponomarev
e0ceacd1ad
Store original, quoted form in SQLIdent
...
Also move more things to use SQLIdent instead of String in the hope of
making it a newtype eventually.
Add tests that quoted identifiers round-trip parsing/serialization correctly.
2019-02-07 05:33:12 +03:00
Nickolay Ponomarev
07790fe4c4
Improve DELETE FROM parsing (4.4/4.4)
...
Store (and parse) `table_name: SQLObjectName` instead of
`relation: Option<Box<ASTNode>>`, which can be an arbitrary expression.
Also remove the `Option<>`: the table name is not optional in any dialects
I'm familiar with. While the FROM keyword itself _is_ optional in some
dialects, there are more things to implement for those dialects, see
https://stackoverflow.com/a/4484271/1026
2019-02-07 05:31:51 +03:00
Nickolay Ponomarev
f5bd9c398f
Simplify by avoiding SQLCompoundIdentifier (4.3/4.4)
...
...instead make `parse_compound_identifier()` return the underlying
Vec<> directly, and rename it to `parse_list_of_ids()`, since it's
used both for parsing compound identifiers and lists of identifiers.
2019-02-07 05:31:47 +03:00
Nickolay Ponomarev
39e98cb11a
Rename parse_tablename -> parse_object_name (4.2/4.4)
...
...to match the name of the recently introduced `SQLObjectName` struct
and to avoid any reservations about using it with multi-part names of
objects other than tables (as in the `type_name` case).
2019-02-07 05:31:44 +03:00
Nickolay Ponomarev
523f086be7
Introduce SQLObjectName struct (4.1/4.4)
...
(To store "A name of a table, view, custom type, etc., possibly
multi-part, i.e. db.schema.obj".)
Before this change
- some places used `String` for this (these are updated in this commit)
- while others (notably SQLStatement::SQLDelete::relation, which is
the reason for this series of commits) relied on
ASTNode::SQLCompoundIdentifier (which is also backed by a
Vec<SQLIdent>, but, as a variant of ASTNode enum, is not convenient
to use when you know you need that specific variant).
2019-02-07 05:31:40 +03:00