@@ -15017,10 +15017,8 @@ impl<'a> Parser<'a> {
15017
15017
15018
15018
/// Parse a FETCH clause
15019
15019
pub fn parse_fetch(&mut self) -> Result<Fetch, ParserError> {
15020
- if dialect_of!(self is SnowflakeDialect) {
15021
- return self.parse_snowflake_fetch();
15022
- }
15023
- self.expect_one_of_keywords(&[Keyword::FIRST, Keyword::NEXT])?;
15020
+ let _ = self.parse_one_of_keywords(&[Keyword::FIRST, Keyword::NEXT]);
15021
+
15024
15022
let (quantity, percent) = if self
15025
15023
.parse_one_of_keywords(&[Keyword::ROW, Keyword::ROWS])
15026
15024
.is_some()
@@ -15029,39 +15027,23 @@ impl<'a> Parser<'a> {
15029
15027
} else {
15030
15028
let quantity = Expr::Value(self.parse_value()?);
15031
15029
let percent = self.parse_keyword(Keyword::PERCENT);
15032
- self.expect_one_of_keywords (&[Keyword::ROW, Keyword::ROWS])? ;
15030
+ let _ = self.parse_one_of_keywords (&[Keyword::ROW, Keyword::ROWS]);
15033
15031
(Some(quantity), percent)
15034
15032
};
15033
+
15035
15034
let with_ties = if self.parse_keyword(Keyword::ONLY) {
15036
15035
false
15037
- } else if self.parse_keywords(&[Keyword::WITH, Keyword::TIES]) {
15038
- true
15039
15036
} else {
15040
- return self.expected("one of ONLY or WITH TIES", self.peek_token());
15037
+ self.parse_keywords(&[Keyword:: WITH, Keyword::TIES])
15041
15038
};
15039
+
15042
15040
Ok(Fetch {
15043
15041
with_ties,
15044
15042
percent,
15045
15043
quantity,
15046
15044
})
15047
15045
}
15048
15046
15049
- /// Parse a FETCH clause with Snowflake-specific syntax
15050
- fn parse_snowflake_fetch(&mut self) -> Result<Fetch, ParserError> {
15051
- // Snowflake: All additional keywords are optional. WITH TIES is not allowed.
15052
- let _ = self.parse_one_of_keywords(&[Keyword::FIRST, Keyword::NEXT]);
15053
-
15054
- let quantity = Expr::Value(self.parse_value()?);
15055
- let _ = self.parse_one_of_keywords(&[Keyword::ROW, Keyword::ROWS]);
15056
- let _ = self.parse_keyword(Keyword::ONLY);
15057
-
15058
- Ok(Fetch {
15059
- with_ties: false,
15060
- percent: false,
15061
- quantity: Some(quantity),
15062
- })
15063
- }
15064
-
15065
15047
/// Parse a FOR UPDATE/FOR SHARE clause
15066
15048
pub fn parse_lock(&mut self) -> Result<LockClause, ParserError> {
15067
15049
let lock_type = match self.expect_one_of_keywords(&[Keyword::UPDATE, Keyword::SHARE])? {
0 commit comments