File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ SELECT 1 END
Original file line number Diff line number Diff line change @@ -554,15 +554,8 @@ impl<'a> Parser<'a> {
554554 expecting_statement_delimiter = false;
555555 }
556556
557- match &self.peek_token_ref().token {
558- Token::EOF => break,
559- // end of statement
560- Token::Word(word)
561- if expecting_statement_delimiter && word.keyword == Keyword::END =>
562- {
563- break;
564- }
565- _ => {}
557+ if self.peek_token_ref().token == Token::EOF {
558+ break;
566559 }
567560
568561 if expecting_statement_delimiter {
Original file line number Diff line number Diff line change @@ -23470,3 +23470,14 @@ fn parse_do_statement() {
2347023470 ParserError::ParserError("Expected: an SQL statement, found: DO".to_string())
2347123471 );
2347223472}
23473+
23474+ #[test]
23475+ fn parse_trailing_end_keyword_is_not_silently_dropped() {
23476+ let dialects = all_dialects();
23477+ assert_eq!(
23478+ dialects
23479+ .parse_sql_statements("SELECT a FROM t1 WHERE a = b END")
23480+ .unwrap_err(),
23481+ ParserError::ParserError("Expected: end of statement, found: END".to_string())
23482+ );
23483+ }
Original file line number Diff line number Diff line change @@ -13430,3 +13430,13 @@ fn display_maintain_privilege_propagates_formatter_errors() {
1343013430 Err ( fmt:: Error )
1343113431 ) ;
1343213432}
13433+
13434+ #[ test]
13435+ fn parse_case_ending_in_end_keyword_is_not_silently_dropped ( ) {
13436+ // PostgreSQL reads the second `END` as a bare column alias
13437+ assert_eq ! (
13438+ pg( ) . parse_sql_statements( "SELECT CASE 1 WHEN 1 THEN 1 END END FROM t" )
13439+ . unwrap_err( ) ,
13440+ ParserError :: ParserError ( "Expected: end of statement, found: END" . to_string( ) )
13441+ ) ;
13442+ }
You can’t perform that action at this time.
0 commit comments