@@ -2849,6 +2849,8 @@ func (p *Parser) parseAlterTable(pos token.Pos) *ast.AlterTable {
2849
2849
alteration = p .parseAlterTableAdd ()
2850
2850
case p .Token .IsKeywordLike ("DROP" ):
2851
2851
alteration = p .parseAlterTableDrop ()
2852
+ case p .Token .IsKeywordLike ("RENAME" ):
2853
+ alteration = p .parseAlterTableRename ()
2852
2854
case p .Token .IsKeywordLike ("REPLACE" ):
2853
2855
alteration = p .parseAlterTableReplace ()
2854
2856
case p .Token .Kind == "SET" :
@@ -2870,12 +2872,24 @@ func (p *Parser) parseAlterTable(pos token.Pos) *ast.AlterTable {
2870
2872
}
2871
2873
}
2872
2874
2875
+ func (p * Parser ) parseAddSynonym (add token.Pos ) * ast.AddSynonym {
2876
+ p .expectKeywordLike ("SYNONYM" )
2877
+ name := p .parseIdent ()
2878
+
2879
+ return & ast.AddSynonym {
2880
+ Add : add ,
2881
+ Name : name ,
2882
+ }
2883
+ }
2884
+
2873
2885
func (p * Parser ) parseAlterTableAdd () ast.TableAlteration {
2874
2886
pos := p .expectKeywordLike ("ADD" ).Pos
2875
2887
2876
2888
var alteration ast.TableAlteration
2877
2889
2878
2890
switch {
2891
+ case p .Token .IsKeywordLike ("SYNONYM" ):
2892
+ alteration = p .parseAddSynonym (pos )
2879
2893
case p .Token .IsKeywordLike ("COLUMN" ):
2880
2894
p .expectKeywordLike ("COLUMN" )
2881
2895
ifNotExists := p .parseIfNotExists ()
@@ -2926,6 +2940,13 @@ func (p *Parser) parseAlterTableDrop() ast.TableAlteration {
2926
2940
var alteration ast.TableAlteration
2927
2941
2928
2942
switch {
2943
+ case p .Token .IsKeywordLike ("SYNONYM" ):
2944
+ p .expectKeywordLike ("SYNONYM" )
2945
+ name := p .parseIdent ()
2946
+ alteration = & ast.DropSynonym {
2947
+ Drop : pos ,
2948
+ Name : name ,
2949
+ }
2929
2950
case p .Token .IsKeywordLike ("COLUMN" ):
2930
2951
p .expectKeywordLike ("COLUMN" )
2931
2952
name := p .parseIdent ()
@@ -2955,6 +2976,25 @@ func (p *Parser) parseAlterTableDrop() ast.TableAlteration {
2955
2976
return alteration
2956
2977
}
2957
2978
2979
+ func (p * Parser ) parseAlterTableRename () ast.TableAlteration {
2980
+ pos := p .expectKeywordLike ("RENAME" ).Pos
2981
+ p .expect ("TO" )
2982
+ name := p .parseIdent ()
2983
+
2984
+ var addSynonym * ast.AddSynonym
2985
+ if p .Token .Kind == "," {
2986
+ p .nextToken ()
2987
+ add := p .expectKeywordLike ("ADD" ).Pos
2988
+ addSynonym = p .parseAddSynonym (add )
2989
+ }
2990
+
2991
+ return & ast.RenameTo {
2992
+ Rename : pos ,
2993
+ Name : name ,
2994
+ AddSynonym : addSynonym ,
2995
+ }
2996
+ }
2997
+
2958
2998
func (p * Parser ) parseAlterTableReplace () ast.TableAlteration {
2959
2999
pos := p .expectKeywordLike ("REPLACE" ).Pos
2960
3000
rdp := p .parseRowDeletionPolicy ()
0 commit comments