Skip to content

Commit 0d6d915

Browse files
authored
postgresql: Add support for renaming types (#971)
1 parent f65152a commit 0d6d915

File tree

11 files changed

+196
-0
lines changed

11 files changed

+196
-0
lines changed

internal/endtoend/testdata/ddl_alter_type_rename/postgresql/go/db.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/ddl_alter_type_rename/postgresql/go/models.go

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/ddl_alter_type_rename/postgresql/go/query.sql.go

Lines changed: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CREATE TYPE event AS enum ('START', 'STOP');
2+
3+
ALTER TYPE event RENAME TO "new_event";
4+
5+
CREATE TABLE log_lines (
6+
id BIGSERIAL PRIMARY KEY,
7+
status "new_event" NOT NULL
8+
);
9+
10+
-- name: ListAuthors :many
11+
SELECT * FROM log_lines;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"engine": "postgresql",
7+
"name": "querytest",
8+
"schema": "query.sql",
9+
"queries": "query.sql"
10+
}
11+
]
12+
}

internal/engine/postgresql/parse.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,16 @@ func translate(node *nodes.Node) (ast.Node, error) {
562562
NewName: makeString(n.Newname),
563563
}, nil
564564

565+
case nodes.ObjectType_OBJECT_TYPE:
566+
rel, err := parseRelation(n.Object)
567+
if err != nil {
568+
return nil, fmt.Errorf("nodes.RenameStmt: TYPE: %w", err)
569+
}
570+
return &ast.RenameTypeStmt{
571+
Type: rel.TypeName(),
572+
NewName: makeString(n.Newname),
573+
}, nil
574+
565575
}
566576
return nil, errSkip
567577

internal/sql/ast/rename_type_stmt.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package ast
2+
3+
type RenameTypeStmt struct {
4+
Type *TypeName
5+
NewName *string
6+
}
7+
8+
func (n *RenameTypeStmt) Pos() int {
9+
return 0
10+
}

internal/sql/astutils/rewrite.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@ func (a *application) apply(parent ast.Node, name string, iter *iterator, n ast.
204204
case *ast.RenameTableStmt:
205205
a.apply(n, "Table", nil, n.Table)
206206

207+
case *ast.RenameTypeStmt:
208+
a.apply(n, "Type", nil, n.Type)
209+
207210
case *ast.Statement:
208211
a.apply(n, "Raw", nil, n.Raw)
209212

internal/sql/astutils/walk.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ func Walk(f Visitor, node ast.Node) {
128128
Walk(f, n.Table)
129129
}
130130

131+
case *ast.RenameTypeStmt:
132+
if n.Type != nil {
133+
Walk(f, n.Type)
134+
}
135+
131136
case *ast.Statement:
132137
if n.Raw != nil {
133138
Walk(f, n.Raw)

internal/sql/catalog/catalog.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,9 @@ func (c *Catalog) Update(stmt ast.Statement) error {
340340
case *ast.RenameTableStmt:
341341
err = c.renameTable(n)
342342

343+
case *ast.RenameTypeStmt:
344+
err = c.renameType(n)
345+
343346
}
344347
return err
345348
}

0 commit comments

Comments
 (0)