Commit graph

362 commits

Author SHA1 Message Date
Augusto Fotino
b3688513eb
feat: add support for except clause on wildcards (#745) 2022-12-05 14:03:59 -05:00
Sarah Yurick
528b3f2234
Support CREATE TABLE x AS TABLE y (#704)
* first commit

* fix style and edit test

* fix test?

* remove unnecessary logic

* refactor implementation

* codestyle

* add schema support

* codestyle and lint

* Apply suggestions from code review

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>

* PartialOrd and Ord

* clean up parser logic

* codestyle and lint

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
2022-12-01 09:56:14 -05:00
Aljaž Mur Eržen
8e1c90c0d8
Support MySQL ROWS syntax for VALUES (#737)
* Adapt VALUES to MySQL dialect

* Update src/ast/query.rs

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>

* remove *requirement* for ROW

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
2022-12-01 09:46:55 -05:00
yuval-illumex
a422116b89
inital commit (#736) 2022-11-30 13:33:15 -05:00
mao
316359760d
Support USING method when creating indexes. (#731)
* fix: create index using function

* fix: code style

Co-authored-by: yangjiaxin <yangjiaxin@qianxin.com>
2022-11-30 13:17:38 -05:00
mingmwang
96bca38fae
Support SEMI/ANTI JOIN syntax (#723) 2022-11-30 12:57:45 -05:00
Augusto Fotino
fa6bd01b19
Support EXCLUDE support for snowflake and generic dialect (#721)
The exclude clause can be used after a possibly qualified on SELECT
2022-11-30 12:29:43 -05:00
Augusto Fotino
886875f3bf
Support for IF NOT EXISTS in ALTER TABLE ADD COLUMN (#707) 2022-11-29 15:37:14 -05:00
Wei-Ting Kuo
bae682255d
add set time zone sometimezone as a exception while parsing keyword::set (#727)
* add set time zone sometimezone as a exception while parsing keyword::set

* remove redundant parentheses

* add Statement::SetTimeZone

* delete useless comments
2022-11-28 16:16:08 -05:00
Sarah Yurick
57083a0df1
Fix interval parsing logic and precedence (#705)
* initial fix

* add comma

* add test

* style

* add more tests

* codestyle fix
2022-11-22 07:45:47 -05:00
unvalley
4b1dc1abf7
Support UPDATE ... FROM ( subquery ) in some dialects (#694)
* Apply UPDATE SET FROM statement for some dialects

* Add GenericDialect to support

* Test SnowflakeDialect

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
2022-11-11 16:37:09 -05:00
main()
814367a6ab
Implement ON CONFLICT and RETURNING (#666)
* Implement RETURNING on INSERT/UPDATE/DELETE

* Implement INSERT ... ON CONFLICT

* Fix tests

* cargo fmt

* tests: on conflict and returning

Co-authored-by: gamife <gamife9886@gmail.com>
2022-11-11 16:15:31 -05:00
Augusto Fotino
65c5a37bce
feat: add precision for TIME, DATETIME, and TIMESTAMP data types (#701)
Now all those statements are both parsed and displayed with precision
and timezone info. Tests were added to the ones presented in the ANSI
standard.
2022-11-11 16:06:57 -05:00
SuperBo
87b4a168cb
Parse ARRAY_AGG for Bigquery and Snowflake (#662) 2022-11-11 15:25:07 -05:00
omer-shtivi
0428ac742b
Add MySql, BigQuery to all dialects (#697)
* Add MySql, BigQuery to all dialects

* move unsupported on mysql from common
2022-11-07 15:32:47 -05:00
unvalley
f7817bc7c2
Support DISTINCT for SetOperator (#689)
* Update SetOperation field all to op_option

* Implement parse_set_operator_option

cargo fmt

Fix parse_set_operator_option after next_token

* Add test for parsing union distinct

* Rename to SetQualifier and fix fmt space

* Add None to SetQualifier

* Update parse method

* Rename to SetQuantifier

* Rename parse_set_operator_option parse_set_operator

* Fix test to parse union, except, intersect

* Add some comments to SetQuantifier

* Fix comment
2022-11-07 07:05:59 -05:00
yuval-illumex
0f7e144890
Support the ARRAY type of Snowflake (#699)
* Snowflake Array

* Use the array data type

* Try to fix build

* Try to fix build

* Change Array to option

* Remove unused import
2022-11-04 10:25:25 -04:00
AugustoFKL
1b3778e2d5
feature!: added NUMERIC and DEC ANSI data types, and now the DECIMAL (#695)
type prints DECIMAL instead of NUMERIC.

BREAKING CHANGE: enum DATA TYPE variants changed, changing any API that
uses it.
2022-10-31 15:22:34 -04:00
Sarah Yurick
f0646c8c1a
add Date keyword (#691) 2022-10-31 15:20:57 -04:00
AugustoFKL
2aba3f8c91
Adding MySQL table option {INDEX | KEY} to the CREATE TABLE definiton (partial). (#665)
Theoretically the behavior should be the same as CREATE INDEX, but we
cannot make that assumption, so the parse is (almost) identical as the
input.

Breaking changes:
- Now HASH and BTREE are KEYWORDS, and using them as names can result in
  errors.
- Now 'KEY' and 'INDEX' column names start the parsing of a table constraint if unquoted for the Generic dialect. This results in possible conficts if canonical results are compared for all dialects if a column is named 'key' without quotes.
2022-10-19 17:24:38 -04:00
sam
b32cbbd855
Support drop sequence statement (#673)
* Add ObjectType Sequence

* Drop sequence test cases added.

* Parser and Drop statement Display updated.

* Parser and Drop statement Display updated.

* Fix compile errors

* add new test case
2022-10-15 08:04:19 -04:00
Francis Du
a59874136d
Support cache/uncache table syntax (#670)
* feat: support cache/uncache table syntax

* fix: support the full cache table syntax
2022-10-15 07:53:43 -04:00
Mustafa akur
427bec4ccc
Support for INTERVAL inside window frames (#655)
* Add support to for INTERVAL inside window queries

* Remove the unnecessary ancillary struct Interval

* Convert Window Frame Bound to Expr

* remove unnecessary changes

* remove unnecessary changes

Co-authored-by: Mehmet Ozan Kabak <ozankabak@gmail.com>
2022-10-15 06:34:52 -04:00
AugustoFKL
cacdf3305f
Add support for unit on char length units for small character string types. (#663)
This results in complete support for ANSI CHARACTER, CHAR, CHARACTER VARYING,
CHAR VARYING, and VARCHAR.
2022-10-11 08:54:15 -04:00
Sarah Yurick
cb397d19f9
Support CEIL(expr TO DateTimeField) and FLOOR(expr TO DateTimeField) (#635)
* support ceil/floor to datetime

* Update mod.rs

* Update parser.rs

* murphys law

* Update sqlparser_common.rs

* possible fix?

* remove question mark

* ceil to floor

* Update mod.rs

* Apply suggestions from code review

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>

* refactor into parse_ceil_floor_expr

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
2022-10-06 15:21:25 -04:00
AugustoFKL
f7f14df4b1
647 Adding all ansii character string types, parsing them, and differentiating between each one (#648) 2022-10-04 06:42:29 -04:00
AugustoFKL
1ced0f6304
645 New schema name structure (#646) 2022-10-03 08:38:01 -04:00
AugustoFKL
95464ec72c
Change TIMESTAMP and TIME parsing so that time zone information is preserved (#641)
* 640 Fixing time zone printing format for TIMESTAMP and TIME

* 640 Removing unnecessary changes

* Update src/ast/data_type.rs

Fix comment typo

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
2022-10-03 08:37:17 -04:00
AugustoFKL
3beecc0a7a
Correct order of arguments in LIMIT x,y , restrict to MySql and generic dialects (#642)
* 613 Fixing MySQL LIMIT syntax

* 613 Reducing logic to real case scenario

* 613 Adding syntax to generic dialect
2022-10-01 17:23:06 -04:00
AugustoFKL
fb5a9747ae
Support optional precision for CLOB and BLOB (#639)
* 638 Adjusting CLOB and BLOB with optional precision

* 638 Adding integration tests to increase coverage

* 638 Adjusting BLOB test
2022-10-01 17:15:47 -04:00
AugustoFKL
300e28bd85
636 Adjusting VARBINARY and BINARY with optional precision (#637) 2022-10-01 16:52:44 -04:00
Sarah Yurick
d87408bdaf
Parse MILLENNIUM (#633)
* add unknown, is not true/false/unknown

* millennium
2022-09-28 16:26:29 -04:00
AugustoFKL
e951cd5278
#625 adding mediumint support (#630) 2022-09-28 16:26:17 -04:00
ding-young
6c8f31c367
Fix parsing CLOB, BINARY, VARBINARY, BLOB data type (#618)
* fix(parser): parse clob, binary, varbinary, blob data type

* feat(tests): parse_cast tests for LOB, BINARY datatype
2022-09-28 07:02:30 -04:00
Ben Cook
91087fcba0
Support CREATE ROLE and DROP ROLE (#598)
* Parse GRANT ROLE and DROP ROLE

* Gate create role on dialect

* cargo fmt

* clippy

* no-std

* clippy again
2022-09-27 09:58:36 -04:00
Ophir LOJKINE
604f755a59
Fix parse error on some prepared statement placeholders (#604)
sqlparser can now parse all the prepared statement placeholders supported by SQLite:

 - ?
 - ?NNN
 - @VVV
 - :VVV
 - $VVV

See: https://www.sqlite.org/lang_expr.html#varparam

This does not break existing support for postgresql's '@' operator

Fixes #603
2022-09-27 09:58:26 -04:00
ding-young
3ac1bb5b80
Move Value::Interval to Expr::Interval (#609)
* refactor(value): convert Value::Interval to Expr::Interval

* test(sqlparser_common): modify test case

* refactor(parser): rename func parse_interval

* refactor(tests) rename parse_interval test func
2022-09-27 09:30:48 -04:00
Maciej Skrzypkowski
d4e5b4d5e8
Support National string literal with lower case n (#612)
* National string literal with lower case n

It's used by Snowflake

* Corrected DB name

Co-authored-by: Maciej Skrzypkowski <maciej.skrzypkowski@satoricyber.com>
2022-09-27 09:07:13 -04:00
Alex Qyoun-ae
0724ef13a4
Box Query in Cte (#572) 2022-09-27 09:03:58 -04:00
Daniël Heres
39761b0599
Add optional format for explain (#621)
* Add format for explain

* Add comment
2022-09-26 07:22:03 -04:00
Justin Joyce
495ab59aad
Support SHOW FUNCTIONS (#620)
* support SHOW FUNCTIONS

* Update keywords.rs

* Update mod.rs

* Update sqlparser_common.rs

* Fix CI issues
2022-09-26 08:33:53 +02:00
Wei-Ting Kuo
fccae77c5e
support "set time zone to 'some-timezone'" (#617)
* support "set time zone"

* fix clippy

* fix test cases
2022-09-20 09:44:51 -04:00
Alex Qyoun-ae
0bb49cea99
feat: Support LOCALTIME and LOCALTIMESTAMP time functions (#592) 2022-08-30 10:15:39 -06:00
Ayush Dattagupta
6f55dead53
Add overlay expr (#594)
* Add PLACING keyword to keywords list

* Add high level overlay expr to Expr enum

* Add parsing logic for overlay op

* add ovleray and is not true/false/unknown tests
2022-08-26 15:13:25 -06:00
Wei-Ting Kuo
95fbb55f2c
add with/without time zone (#589) 2022-08-26 15:11:21 -06:00
Dmitry Patsura
6d8aacd85b
feat: Support expression in SET statement (#574)
Co-authored-by: Alex Vasilev <vaspiring@gmail.com>
2022-08-18 13:29:55 -04:00
Andy Grove
eb7f1b005e
Parse LIKE patterns as Expr not Value (#579) 2022-08-18 10:02:54 -06:00
Ayush Dattagupta
42c5d43b45
Support TRIM from with optional FROM clause (#573)
* Split trimwhereFlag and trim_char expr to seperate members of Expr::Trim

* update trim parsing logic to handle no flag + char from expr combo

* add tests

* Allow trim flag without trim_what expr

* Add trim flag without trim_what test
2022-08-15 17:58:43 -04:00
Alex Qyoun-ae
31ba0012f7
Support PostgreSQL array subquery constructor (#566) 2022-08-12 14:08:56 -04:00
Ayush Dattagupta
f07063f0cd
Support for SIMILAR TO syntax, change Like and ILike to Expr variants, allow escape char for like/ilike (#569)
* Remove [not]like,[not]ilike from binary operator list

* Add like, ilike and similar as an expr variant. Also adds support for escape char to like/ilike

* Add parsing logic for similar to, update parsing logic for like/ilike

* Add tests for similar to, update tests for like/ilike

* Fix linter warnings

* remove additional copyright license from files

* Add more coverage w/wo escape char for like,ilike,similar to
2022-08-11 15:44:26 -04:00