@@ -212,7 +212,8 @@ func (p *Parser) parseStatement() ast.Statement {
212
212
switch {
213
213
case p .Token .Kind == "SELECT" || p .Token .Kind == "@" || p .Token .Kind == "WITH" || p .Token .Kind == "(" :
214
214
return p .parseQueryStatement ()
215
- case p .Token .Kind == "CREATE" || p .Token .IsKeywordLike ("ALTER" ) || p .Token .IsKeywordLike ("DROP" ) || p .Token .IsKeywordLike ("GRANT" ) || p .Token .IsKeywordLike ("REVOKE" ):
215
+ case p .Token .Kind == "CREATE" || p .Token .IsKeywordLike ("ALTER" ) || p .Token .IsKeywordLike ("DROP" ) ||
216
+ p .Token .IsKeywordLike ("RENAME" ) || p .Token .IsKeywordLike ("GRANT" ) || p .Token .IsKeywordLike ("REVOKE" ):
216
217
return p .parseDDL ()
217
218
case p .Token .IsKeywordLike ("INSERT" ) || p .Token .IsKeywordLike ("DELETE" ) || p .Token .IsKeywordLike ("UPDATE" ):
218
219
return p .parseDML ()
@@ -2200,6 +2201,9 @@ func (p *Parser) parseDDL() ast.DDL {
2200
2201
return p .parseDropChangeStream (pos )
2201
2202
}
2202
2203
p .panicfAtToken (& p .Token , "expected pseudo keyword: TABLE, INDEX, ROLE, CHANGE, but: %s" , p .Token .AsString )
2204
+ case p .Token .IsKeywordLike ("RENAME" ):
2205
+ p .nextToken ()
2206
+ return p .parseRenameTable (pos )
2203
2207
case p .Token .IsKeywordLike ("GRANT" ):
2204
2208
p .nextToken ()
2205
2209
return p .parseGrant (pos )
@@ -3886,3 +3890,25 @@ func (p *Parser) errorfAtToken(tok *token.Token, msg string, params ...interface
3886
3890
func (p * Parser ) panicfAtToken (tok * token.Token , msg string , params ... interface {}) {
3887
3891
panic (p .errorfAtToken (tok , msg , params ... ))
3888
3892
}
3893
+
3894
+ func (p * Parser ) parseRenameTableTo () * ast.RenameTableTo {
3895
+ old := p .parseIdent ()
3896
+ p .expect ("TO" )
3897
+ new := p .parseIdent ()
3898
+
3899
+ return & ast.RenameTableTo {
3900
+ Old : old ,
3901
+ New : new ,
3902
+ }
3903
+ }
3904
+
3905
+ func (p * Parser ) parseRenameTable (pos token.Pos ) * ast.RenameTable {
3906
+ p .expectKeywordLike ("TABLE" )
3907
+ tos := parseCommaSeparatedList (p , p .parseRenameTableTo )
3908
+
3909
+ return & ast.RenameTable {
3910
+ Rename : pos ,
3911
+ Tos : tos ,
3912
+ }
3913
+
3914
+ }
0 commit comments