File tree Expand file tree Collapse file tree 2 files changed +30
-8
lines changed Expand file tree Collapse file tree 2 files changed +30
-8
lines changed Original file line number Diff line number Diff line change @@ -13798,7 +13798,8 @@ impl<'a> Parser<'a> {
1379813798
1379913799 /// Parse a FETCH clause
1380013800 pub fn parse_fetch(&mut self) -> Result<Fetch, ParserError> {
13801- self.expect_one_of_keywords(&[Keyword::FIRST, Keyword::NEXT])?;
13801+ let _ = self.parse_one_of_keywords(&[Keyword::FIRST, Keyword::NEXT]);
13802+
1380213803 let (quantity, percent) = if self
1380313804 .parse_one_of_keywords(&[Keyword::ROW, Keyword::ROWS])
1380413805 .is_some()
@@ -13807,16 +13808,16 @@ impl<'a> Parser<'a> {
1380713808 } else {
1380813809 let quantity = Expr::Value(self.parse_value()?);
1380913810 let percent = self.parse_keyword(Keyword::PERCENT);
13810- self.expect_one_of_keywords (&[Keyword::ROW, Keyword::ROWS])? ;
13811+ let _ = self.parse_one_of_keywords (&[Keyword::ROW, Keyword::ROWS]);
1381113812 (Some(quantity), percent)
1381213813 };
13814+
1381313815 let with_ties = if self.parse_keyword(Keyword::ONLY) {
1381413816 false
13815- } else if self.parse_keywords(&[Keyword::WITH, Keyword::TIES]) {
13816- true
1381713817 } else {
13818- return self.expected("one of ONLY or WITH TIES", self.peek_token());
13818+ self.parse_keywords(&[Keyword:: WITH, Keyword::TIES])
1381913819 };
13820+
1382013821 Ok(Fetch {
1382113822 with_ties,
1382213823 percent,
Original file line number Diff line number Diff line change @@ -465,10 +465,12 @@ fn test_snowflake_create_table_cluster_by() {
465465 }
466466 _ => unreachable ! ( ) ,
467467 }
468- match snowflake ( ) . verified_stmt ( "CREATE TABLE my_table (ts DATE, a TEXT) CLUSTER BY (to_date(ts), a)" ) {
468+ match snowflake ( )
469+ . verified_stmt ( "CREATE TABLE my_table (ts DATE, a TEXT) CLUSTER BY (to_date(ts), a)" )
470+ {
469471 Statement :: CreateTable ( CreateTable {
470- name, cluster_by, ..
471- } ) => {
472+ name, cluster_by, ..
473+ } ) => {
472474 assert_eq ! ( "my_table" , name. to_string( ) ) ;
473475 assert_eq ! (
474476 Some ( WrappedCollection :: Parentheses ( vec![
@@ -3527,3 +3529,22 @@ fn test_alter_session() {
35273529 ) ;
35283530 snowflake ( ) . one_statement_parses_to ( "ALTER SESSION UNSET a\n B" , "ALTER SESSION UNSET a, B" ) ;
35293531}
3532+
3533+ #[ test]
3534+ fn test_snowflake_fetch_clause_syntax ( ) {
3535+ let canonical = "SELECT c1 FROM fetch_test FETCH FIRST 2 ROWS ONLY" ;
3536+ snowflake ( ) . verified_only_select_with_canonical ( "SELECT c1 FROM fetch_test FETCH 2" , canonical) ;
3537+
3538+ snowflake ( )
3539+ . verified_only_select_with_canonical ( "SELECT c1 FROM fetch_test FETCH FIRST 2" , canonical) ;
3540+ snowflake ( )
3541+ . verified_only_select_with_canonical ( "SELECT c1 FROM fetch_test FETCH NEXT 2" , canonical) ;
3542+
3543+ snowflake ( )
3544+ . verified_only_select_with_canonical ( "SELECT c1 FROM fetch_test FETCH 2 ROW" , canonical) ;
3545+
3546+ snowflake ( ) . verified_only_select_with_canonical (
3547+ "SELECT c1 FROM fetch_test FETCH FIRST 2 ROWS" ,
3548+ canonical,
3549+ ) ;
3550+ }
You can’t perform that action at this time.
0 commit comments