@@ -649,7 +649,10 @@ impl<'a> Parser<'a> {
649649 self.prev_token();
650650 self.parse_export_data()
651651 }
652- Keyword::VACUUM => self.parse_vacuum(),
652+ Keyword::VACUUM => {
653+ self.prev_token();
654+ self.parse_vacuum()
655+ }
653656 _ => self.expected("an SQL statement", next_token),
654657 },
655658 Token::LParen => {
@@ -16934,25 +16937,27 @@ impl<'a> Parser<'a> {
1693416937 }
1693516938
1693616939 fn parse_vacuum(&mut self) -> Result<Statement, ParserError> {
16940+ self.expect_keyword(Keyword::VACUUM)?;
1693716941 let full = self.parse_keyword(Keyword::FULL);
1693816942 let sort_only = self.parse_keywords(&[Keyword::SORT, Keyword::ONLY]);
1693916943 let delete_only = self.parse_keywords(&[Keyword::DELETE, Keyword::ONLY]);
1694016944 let reindex = self.parse_keyword(Keyword::REINDEX);
1694116945 let recluster = self.parse_keyword(Keyword::RECLUSTER);
16942- let (table_name, threshold, boost) = match self.parse_object_name(false) {
16943- Ok(table_name) => {
16944- let threshold = if self.parse_keyword(Keyword::TO) {
16945- let value = self.parse_value()?;
16946- self.expect_keyword(Keyword::PERCENT)?;
16947- Some(value.value)
16948- } else {
16949- None
16950- };
16951- let boost = self.parse_keyword(Keyword::BOOST);
16952- (Some(table_name), threshold, boost)
16953- }
16954- _ => (None, None, false),
16955- };
16946+ let (table_name, threshold, boost) =
16947+ match self.maybe_parse(|p| p.parse_object_name(false))? {
16948+ Some(table_name) => {
16949+ let threshold = if self.parse_keyword(Keyword::TO) {
16950+ let value = self.parse_value()?;
16951+ self.expect_keyword(Keyword::PERCENT)?;
16952+ Some(value.value)
16953+ } else {
16954+ None
16955+ };
16956+ let boost = self.parse_keyword(Keyword::BOOST);
16957+ (Some(table_name), threshold, boost)
16958+ }
16959+ _ => (None, None, false),
16960+ };
1695616961 Ok(Statement::Vacuum(VacuumStatement {
1695716962 full,
1695816963 sort_only,
0 commit comments