File tree Expand file tree Collapse file tree 2 files changed +25
-5
lines changed Expand file tree Collapse file tree 2 files changed +25
-5
lines changed Original file line number Diff line number Diff line change @@ -15023,7 +15023,8 @@ impl<'a> Parser<'a> {
15023
15023
15024
15024
/// Parse a FETCH clause
15025
15025
pub fn parse_fetch(&mut self) -> Result<Fetch, ParserError> {
15026
- self.expect_one_of_keywords(&[Keyword::FIRST, Keyword::NEXT])?;
15026
+ let _ = self.parse_one_of_keywords(&[Keyword::FIRST, Keyword::NEXT]);
15027
+
15027
15028
let (quantity, percent) = if self
15028
15029
.parse_one_of_keywords(&[Keyword::ROW, Keyword::ROWS])
15029
15030
.is_some()
@@ -15032,16 +15033,16 @@ impl<'a> Parser<'a> {
15032
15033
} else {
15033
15034
let quantity = Expr::Value(self.parse_value()?);
15034
15035
let percent = self.parse_keyword(Keyword::PERCENT);
15035
- self.expect_one_of_keywords (&[Keyword::ROW, Keyword::ROWS])? ;
15036
+ let _ = self.parse_one_of_keywords (&[Keyword::ROW, Keyword::ROWS]);
15036
15037
(Some(quantity), percent)
15037
15038
};
15039
+
15038
15040
let with_ties = if self.parse_keyword(Keyword::ONLY) {
15039
15041
false
15040
- } else if self.parse_keywords(&[Keyword::WITH, Keyword::TIES]) {
15041
- true
15042
15042
} else {
15043
- return self.expected("one of ONLY or WITH TIES", self.peek_token());
15043
+ self.parse_keywords(&[Keyword:: WITH, Keyword::TIES])
15044
15044
};
15045
+
15045
15046
Ok(Fetch {
15046
15047
with_ties,
15047
15048
percent,
Original file line number Diff line number Diff line change @@ -4146,3 +4146,22 @@ END
4146
4146
assert_eq ! ( 2 , exception[ 1 ] . idents. len( ) ) ;
4147
4147
assert_eq ! ( 2 , exception[ 1 ] . statements. len( ) ) ;
4148
4148
}
4149
+
4150
+ #[ test]
4151
+ fn test_snowflake_fetch_clause_syntax ( ) {
4152
+ let canonical = "SELECT c1 FROM fetch_test FETCH FIRST 2 ROWS ONLY" ;
4153
+ snowflake ( ) . verified_only_select_with_canonical ( "SELECT c1 FROM fetch_test FETCH 2" , canonical) ;
4154
+
4155
+ snowflake ( )
4156
+ . verified_only_select_with_canonical ( "SELECT c1 FROM fetch_test FETCH FIRST 2" , canonical) ;
4157
+ snowflake ( )
4158
+ . verified_only_select_with_canonical ( "SELECT c1 FROM fetch_test FETCH NEXT 2" , canonical) ;
4159
+
4160
+ snowflake ( )
4161
+ . verified_only_select_with_canonical ( "SELECT c1 FROM fetch_test FETCH 2 ROW" , canonical) ;
4162
+
4163
+ snowflake ( ) . verified_only_select_with_canonical (
4164
+ "SELECT c1 FROM fetch_test FETCH FIRST 2 ROWS" ,
4165
+ canonical,
4166
+ ) ;
4167
+ }
You can’t perform that action at this time.
0 commit comments