mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-04 14:28:22 +00:00
Don't parse ORDER BY as a table alias (8/8)
This commit is contained in:
parent
76ec175d20
commit
50b5724c39
2 changed files with 26 additions and 24 deletions
|
@ -716,5 +716,5 @@ pub const RESERVED_FOR_TABLE_ALIAS: &'static [&'static str] = &[
|
|||
WHERE, GROUP, ON, // keyword is 'reserved' in most dialects
|
||||
JOIN, INNER, CROSS, FULL, LEFT, RIGHT, // not reserved in Oracle
|
||||
NATURAL, USING, // not reserved in Oracle & MSSQL
|
||||
// UNION, EXCEPT, INTERSECT, ORDER // TODO add these with tests.
|
||||
ORDER, // UNION, EXCEPT, INTERSECT, // TODO add these with tests.
|
||||
];
|
||||
|
|
|
@ -229,31 +229,33 @@ fn parse_not_like() {
|
|||
|
||||
#[test]
|
||||
fn parse_select_order_by() {
|
||||
let sql = String::from(
|
||||
"SELECT id, fname, lname FROM customer WHERE id < 5 ORDER BY lname ASC, fname DESC, id",
|
||||
);
|
||||
match verified(&sql) {
|
||||
ASTNode::SQLSelect { order_by, .. } => {
|
||||
assert_eq!(
|
||||
Some(vec![
|
||||
SQLOrderByExpr {
|
||||
expr: Box::new(ASTNode::SQLIdentifier("lname".to_string())),
|
||||
asc: Some(true),
|
||||
},
|
||||
SQLOrderByExpr {
|
||||
expr: Box::new(ASTNode::SQLIdentifier("fname".to_string())),
|
||||
asc: Some(false),
|
||||
},
|
||||
SQLOrderByExpr {
|
||||
expr: Box::new(ASTNode::SQLIdentifier("id".to_string())),
|
||||
asc: None,
|
||||
},
|
||||
]),
|
||||
order_by
|
||||
);
|
||||
fn chk(sql: &str) {
|
||||
match verified(&sql) {
|
||||
ASTNode::SQLSelect { order_by, .. } => {
|
||||
assert_eq!(
|
||||
Some(vec![
|
||||
SQLOrderByExpr {
|
||||
expr: Box::new(ASTNode::SQLIdentifier("lname".to_string())),
|
||||
asc: Some(true),
|
||||
},
|
||||
SQLOrderByExpr {
|
||||
expr: Box::new(ASTNode::SQLIdentifier("fname".to_string())),
|
||||
asc: Some(false),
|
||||
},
|
||||
SQLOrderByExpr {
|
||||
expr: Box::new(ASTNode::SQLIdentifier("id".to_string())),
|
||||
asc: None,
|
||||
},
|
||||
]),
|
||||
order_by
|
||||
);
|
||||
}
|
||||
_ => assert!(false),
|
||||
}
|
||||
_ => assert!(false),
|
||||
}
|
||||
chk("SELECT id, fname, lname FROM customer WHERE id < 5 ORDER BY lname ASC, fname DESC, id");
|
||||
// make sure ORDER is not treated as an alias
|
||||
chk("SELECT id, fname, lname FROM customer ORDER BY lname ASC, fname DESC, id");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue