File tree Expand file tree Collapse file tree 5 files changed +56
-26
lines changed Expand file tree Collapse file tree 5 files changed +56
-26
lines changed Original file line number Diff line number Diff line change @@ -231,26 +231,20 @@ func TestUpdate(t *testing.T) {
231231 ` ,
232232 nil ,
233233 },
234- /*
235- {
236- `
237- CREATE TABLE venues ();
238- ALTER TABLE venues RENAME TO arenas;
239- `,
240- pg.Catalog{
241- Schemas: map[string]pg.Schema{
242- "public": {
243- Types: map[string]pg.Type{},
244- Tables: map[string]pg.Table{
245- "arenas": pg.Table{
246- Name: "arenas",
247- },
248- },
249- },
234+ {
235+ `
236+ CREATE TABLE venues ();
237+ ALTER TABLE venues RENAME TO arenas;
238+ ` ,
239+ & catalog.Schema {
240+ Name : "public" ,
241+ Tables : []* catalog.Table {
242+ {
243+ Rel : & ast.TableName {Name : "arenas" },
250244 },
251245 },
252246 },
253- */
247+ },
254248 {
255249 `
256250 CREATE TYPE status AS ENUM ('open', 'closed');
@@ -273,15 +267,13 @@ func TestUpdate(t *testing.T) {
273267 ` ,
274268 nil ,
275269 },
276- /*
277- {
278- `
279- CREATE TYPE status AS ENUM ('open', 'closed');
280- DROP TYPE public.status;
281- `,
282- catalog.New("public"),
283- },
284- */
270+ {
271+ `
272+ CREATE TYPE status AS ENUM ('open', 'closed');
273+ DROP TYPE public.status;
274+ ` ,
275+ nil ,
276+ },
285277 {
286278 `
287279 CREATE SCHEMA foo;
Original file line number Diff line number Diff line change @@ -365,6 +365,22 @@ func translate(node nodes.Node) (ast.Node, error) {
365365 }
366366 return nil , errSkip
367367
368+ case nodes.RenameStmt :
369+ switch n .RenameType {
370+
371+ case nodes .OBJECT_TABLE :
372+ tbl , err := parseTableName (* n .Relation )
373+ if err != nil {
374+ return nil , err
375+ }
376+ return & ast.RenameTableStmt {
377+ Table : tbl ,
378+ NewName : n .Newname ,
379+ }, nil
380+
381+ }
382+ return nil , errSkip
383+
368384 default :
369385 return nil , errSkip
370386 }
Original file line number Diff line number Diff line change @@ -209,3 +209,12 @@ type CommentOnColumnStmt struct {
209209func (n * CommentOnColumnStmt ) Pos () int {
210210 return 0
211211}
212+
213+ type RenameTableStmt struct {
214+ Table * TableName
215+ NewName * string
216+ }
217+
218+ func (n * RenameTableStmt ) Pos () int {
219+ return 0
220+ }
Original file line number Diff line number Diff line change @@ -165,6 +165,8 @@ func (c *Catalog) Build(stmts []ast.Statement) error {
165165 err = c .dropTable (n )
166166 case * ast.DropTypeStmt :
167167 err = c .dropType (n )
168+ case * ast.RenameTableStmt :
169+ err = c .renameTable (n )
168170 }
169171 if err != nil {
170172 return err
Original file line number Diff line number Diff line change @@ -145,3 +145,14 @@ func (c *Catalog) dropTable(stmt *ast.DropTableStmt) error {
145145 }
146146 return nil
147147}
148+
149+ func (c * Catalog ) renameTable (stmt * ast.RenameTableStmt ) error {
150+ _ , tbl , err := c .getTable (stmt .Table )
151+ if err != nil {
152+ return err
153+ }
154+ if stmt .NewName != nil {
155+ tbl .Rel .Name = * stmt .NewName
156+ }
157+ return nil
158+ }
You can’t perform that action at this time.
0 commit comments