Skip to content

Commit 9aad696

Browse files
authored
Fix ALTER TYPE to update column types (#973)
* fixed alter type to update column types * tests for alter type with update table columns * make for loop more readable
1 parent a29c34d commit 9aad696

File tree

6 files changed

+129
-0
lines changed

6 files changed

+129
-0
lines changed

internal/endtoend/testdata/ddl_alter_type_rename_and_update_columns/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_and_update_columns/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_and_update_columns/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+
CREATE TABLE log_lines (
4+
id BIGSERIAL PRIMARY KEY,
5+
status "event" NOT NULL
6+
);
7+
8+
ALTER TYPE event RENAME TO "new_event";
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/sql/catalog/types.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,5 +207,16 @@ func (c *Catalog) renameType(stmt *ast.RenameTypeStmt) error {
207207

208208
}
209209

210+
// Update all the table columns with the new type
211+
for _, schema := range c.Schemas {
212+
for _, table := range schema.Tables {
213+
for _, column := range table.Columns {
214+
if column.Type == *stmt.Type {
215+
column.Type.Name = newName
216+
}
217+
}
218+
}
219+
}
220+
210221
return nil
211222
}

0 commit comments

Comments
 (0)