@@ -548,9 +548,7 @@ impl<'a> Parser<'a> {
548548 Keyword::PRAGMA => self.parse_pragma(),
549549 Keyword::UNLOAD => self.parse_unload(),
550550 // `RENAME TABLE` is mysql specific https://dev.mysql.com/doc/refman/9.1/en/rename-table.html
551- Keyword::RENAME if self.dialect.supports_rename_table() => {
552- self.parse_rename_table()
553- }
551+ Keyword::RENAME => self.parse_rename(),
554552 // `INSTALL` is duckdb specific https://duckdb.org/docs/extensions/overview
555553 Keyword::INSTALL if dialect_of!(self is DuckDbDialect | GenericDialect) => {
556554 self.parse_install()
@@ -1048,10 +1046,14 @@ impl<'a> Parser<'a> {
10481046 Ok(Statement::NOTIFY { channel, payload })
10491047 }
10501048
1051- pub fn parse_rename_table(&mut self) -> Result<Statement, ParserError> {
1052- self.expect_keyword(Keyword::TABLE)?;
1053- let operations = self.parse_comma_separated(Parser::parse_rename_object_def)?;
1054- Ok(Statement::RenameTable { operations })
1049+ pub fn parse_rename(&mut self) -> Result<Statement, ParserError> {
1050+ if self.dialect.supports_rename_table() && self.peek_keyword(Keyword::TABLE) {
1051+ self.expect_keyword(Keyword::TABLE)?;
1052+ let operations = self.parse_comma_separated(Parser::parse_rename_object_def)?;
1053+ Ok(Statement::RenameTable { operations })
1054+ } else {
1055+ self.expected("an object type after RENAME", self.peek_token())
1056+ }
10551057 }
10561058
10571059 // Tries to parse an expression by matching the specified word to known keywords that have a special meaning in the dialect.
0 commit comments