diff --git a/src/dialect/keywords.rs b/src/dialect/keywords.rs index 1d4d99939..033f5856d 100644 --- a/src/dialect/keywords.rs +++ b/src/dialect/keywords.rs @@ -393,7 +393,7 @@ pub const RESERVED_FOR_TABLE_ALIAS: &[&str] = &[ // Reserved as both a table and a column alias: WITH, SELECT, WHERE, GROUP, ORDER, UNION, EXCEPT, INTERSECT, // Reserved only as a table alias in the `FROM`/`JOIN` clauses: - ON, JOIN, INNER, CROSS, FULL, LEFT, RIGHT, NATURAL, USING, + ON, JOIN, INNER, CROSS, FULL, LEFT, RIGHT, NATURAL, USING, LIMIT, ]; /// Can't be used as a column alias, so that `SELECT alias` diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs index 29d07630e..caeb60bc4 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -124,6 +124,16 @@ fn parse_simple_select() { assert_eq!(Some(ASTNode::SQLValue(Value::Long(5))), select.limit); } +#[test] +fn parse_select_with_limit_but_no_where() { + let sql = "SELECT id, fname, lname FROM customer LIMIT 5"; + let select = verified_only_select(sql); + assert_eq!(false, select.distinct); + assert_eq!(3, select.projection.len()); + let select = verified_query(sql); + assert_eq!(Some(ASTNode::SQLValue(Value::Long(5))), select.limit); +} + #[test] fn parse_select_distinct() { let sql = "SELECT DISTINCT name FROM customer";