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> {
13798
13798
13799
13799
/// Parse a FETCH clause
13800
13800
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
+
13802
13803
let (quantity, percent) = if self
13803
13804
.parse_one_of_keywords(&[Keyword::ROW, Keyword::ROWS])
13804
13805
.is_some()
@@ -13807,16 +13808,16 @@ impl<'a> Parser<'a> {
13807
13808
} else {
13808
13809
let quantity = Expr::Value(self.parse_value()?);
13809
13810
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]);
13811
13812
(Some(quantity), percent)
13812
13813
};
13814
+
13813
13815
let with_ties = if self.parse_keyword(Keyword::ONLY) {
13814
13816
false
13815
- } else if self.parse_keywords(&[Keyword::WITH, Keyword::TIES]) {
13816
- true
13817
13817
} else {
13818
- return self.expected("one of ONLY or WITH TIES", self.peek_token());
13818
+ self.parse_keywords(&[Keyword:: WITH, Keyword::TIES])
13819
13819
};
13820
+
13820
13821
Ok(Fetch {
13821
13822
with_ties,
13822
13823
percent,
Original file line number Diff line number Diff line change @@ -465,10 +465,12 @@ fn test_snowflake_create_table_cluster_by() {
465
465
}
466
466
_ => unreachable ! ( ) ,
467
467
}
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
+ {
469
471
Statement :: CreateTable ( CreateTable {
470
- name, cluster_by, ..
471
- } ) => {
472
+ name, cluster_by, ..
473
+ } ) => {
472
474
assert_eq ! ( "my_table" , name. to_string( ) ) ;
473
475
assert_eq ! (
474
476
Some ( WrappedCollection :: Parentheses ( vec![
@@ -3527,3 +3529,22 @@ fn test_alter_session() {
3527
3529
) ;
3528
3530
snowflake ( ) . one_statement_parses_to ( "ALTER SESSION UNSET a\n B" , "ALTER SESSION UNSET a, B" ) ;
3529
3531
}
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