File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -19289,6 +19289,13 @@ impl<'a> Parser<'a> {
1928919289 } if self.dialect.supports_eq_alias_assignment()
1929019290 && matches!(left.as_ref(), Expr::Identifier(_)) =>
1929119291 {
19292+ if matches!(right.as_ref(), Expr::Identifier(v) if v.value.to_lowercase() == "from" && v.quote_style.is_none())
19293+ {
19294+ return parser_err!(
19295+ format!("Expected an expression, found: {right}"),
19296+ self.peek_token_ref().span.start
19297+ );
19298+ }
1929219299 let Expr::Identifier(alias) = *left else {
1929319300 return parser_err!(
1929419301 "BUG: expected identifier expression as alias",
Original file line number Diff line number Diff line change @@ -15270,6 +15270,24 @@ fn test_alias_equal_expr() {
1527015270 let expected = r#"SELECT (a * b) AS some_alias FROM some_table"#;
1527115271 let _ = dialects.one_statement_parses_to(sql, expected);
1527215272
15273+ let sql = r#"SELECT some_alias = "from" FROM some_table"#;
15274+ let expected = r#"SELECT "from" AS some_alias FROM some_table"#;
15275+ let _ = dialects.one_statement_parses_to(sql, expected);
15276+
15277+ assert_eq!(
15278+ dialects
15279+ .parse_sql_statements("SELECT a = FROM")
15280+ .unwrap_err(),
15281+ ParserError::ParserError("Expected an expression, found: FROM".to_string())
15282+ );
15283+
15284+ assert_eq!(
15285+ dialects
15286+ .parse_sql_statements("SELECT a = FROM some_table")
15287+ .unwrap_err(),
15288+ ParserError::ParserError("Expected an expression, found: FROM".to_string())
15289+ );
15290+
1527315291 let dialects = all_dialects_where(|d| !d.supports_eq_alias_assignment());
1527415292 let sql = r#"SELECT x = (a * b) FROM some_table"#;
1527515293 let expected = r#"SELECT x = (a * b) FROM some_table"#;
Original file line number Diff line number Diff line change @@ -2942,6 +2942,11 @@ fn parse_bracket_quoted_function_argument_name() {
29422942 ) ;
29432943}
29442944
2945+ #[ test]
2946+ fn parse_bracket_quoted_eq_alias_assignment ( ) {
2947+ ms ( ) . one_statement_parses_to ( "SELECT a = [from] FROM t" , "SELECT [from] AS a FROM t" ) ;
2948+ }
2949+
29452950#[ test]
29462951fn parse_create_proc ( ) {
29472952 ms ( ) . one_statement_parses_to (
You can’t perform that action at this time.
0 commit comments