* Fix table alias parsing regression
* Revert "Support redshift's columns definition list for system information functions (#769)"
This reverts commit c35dcc93a7.
* parsing of redshift's column definition list for
pg_get_late_binding_view_cols
pg_get_cols
pg_get_grantee_by_iam_role
pg_get_iam_role_by_user
* Renamed ColsDefinition to TableAliasDefinition
added generic dialect
* Tests fixed
* Visitor for IdentPair
* Parsing redshift table alias based on indentifier and
parentheses instead of function name
* fix clippy
---------
Co-authored-by: Maciej Skrzypkowski <maciej.skrzypkowski@satoricyber.com>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
* MySQL Character Set Introducers
* Documentation fix
* Parsing string introducer from Token::word
* Fixed lint
* fix clippy
---------
Co-authored-by: Maciej Skrzypkowski <maciej.skrzypkowski@satoricyber.com>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Postgres supports more generalized locking clauses, for example:
FOR UPDATE OF <table_name> SKIP LOCKED
also, multiple locking clauses. Generalize the parser to support these.
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
* 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>
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.
* Generalize EscapeSingleQuoteString to arbitrary quote character
* Fix escaping of trailing quote in quoted identifiers
* Add new tests instead of modifying existing tests
* support MySQL UNSIGNED
* fix: 🐛 `unsigned` is not column option
* test: 💍 add `unsigned` test
* fix: 🐛 `unsigned` is not column option
* feat: 🎸 declare unsigned data_types
* feat: 🎸 display unsigned
* fix: 🐛 unsigned is not column type option
* feat: 🎸 parse_data_type can parse unsigned
* feat: 🎸 int or decimal or float is unsigned selectable
* fix: 🐛 FLOAT/DOUBLE/DECIMAL + UNSIGNED is not recommended
https://dev.mysql.com/doc/refman/8.0/en/numeric-type-attributes.html
* test: 💍 add test
* style: 💄 fmt
* fix: Handle double quotes inside quoted identifiers correctly
This fixes#410 for standard SQL, however I don't know enough about other dialects to know if they
handle this differently. May need more extensive testing as well.
* refactor: Make quoted identifier parsing a seperate function
* test: Check that quoted identifier tokenization works
Added `pretty_assertions` so that the `assert_eq!` in the tokenization is readable
* test: Check that quoted identifiers work in mysql
* chore: cargo clippy
* Add FunctionArgExpr and remove Expr::[Qualified]Wildcard,
There is no use case of `Expr::Wildcard` and `Expr::QualifiedWildcard` only except for function argments.
Add `FunctionArgExpr` to have `Wildcard` and `QualifiedWildcard`, and remove wildcards in `Expr`.
* Apply `FunctionArgExpr` to sqlparser_mysql tests
* * implement the ON DUPLICATE KEY syntax for MySQL in an INSERT statement
* * add MySQL to the cli example
* remove the dialect check for the ON DUPLICATE KEY insert to support
custom dialects and unwrap some missing results
* * use the Assignment DataType for the ON DUPLICATE KEY UPDATE
* * add support for table aliases in an UPDATE statement
* add support for JOINS in an UPDATE statement (for MySQL)
* * implement the MySQL ALTER TABLE CHANGE COLUMN syntax
* * fix the formatting of the else * rename the parse_identifiers_strict
to parse_identifiers_non_keywords
* Parse SUBSTRING calls that are separated with a comma instead of
keywords
* Fix the linting errors
Co-authored-by: Piotr <piotr.morawski@nc-vision.com>
Co-authored-by: Piotr Morawski <contact@peter-morawski.de>