Skip to content

Commit b581867

Browse files
authored
fix(engine/dolphin): support enum in ALTER definition (#2680)
I got in a case similar to #1503. This PR will fix #1503. I found one discrepancy between column definition between create table and alter definition. I fix it by defining a common sub function. On generic engine update part, it was missing to create enum on alter table statement compared to create. I added an argument to the func createEnum to override previous definition when needed. I added two tests to cover the two ALTER case MODIFY and CHANGE. I only know very few part of the codebase so let me know If I need to change anything to make this merged.
1 parent 669a487 commit b581867

File tree

16 files changed

+394
-98
lines changed

16 files changed

+394
-98
lines changed

internal/endtoend/testdata/enum_alter_change/mysql/go/db.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/enum_alter_change/mysql/go/models.go

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

internal/endtoend/testdata/enum_alter_change/mysql/go/query.sql.go

Lines changed: 37 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- name: ListAuthors :many
2+
select * from authors;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-- similar to issue https://github.com/sqlc-dev/sqlc/issues/1503
2+
3+
CREATE TABLE authors (
4+
id bigint primary key,
5+
status enum("ok", "init") default "init" not null
6+
);
7+
8+
-- remove this alter to see the change in models.go
9+
ALTER TABLE authors CHANGE status status enum('init', 'done', 'canceled', 'processing', 'waiting') default "init" not null;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"name": "querytest",
6+
"path": "go",
7+
"schema": "schema.sql",
8+
"queries": "query.sql",
9+
"engine": "mysql",
10+
"omit_unused_structs": true
11+
}
12+
]
13+
}

internal/endtoend/testdata/enum_alter_modify/mysql/go/db.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/enum_alter_modify/mysql/go/models.go

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

internal/endtoend/testdata/enum_alter_modify/mysql/go/query.sql.go

Lines changed: 37 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- name: ListAuthors :many
2+
select * from authors;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-- similar to issue https://github.com/sqlc-dev/sqlc/issues/1503
2+
3+
CREATE TABLE authors (
4+
id bigint primary key,
5+
status enum("ok", "init") default "init" not null
6+
);
7+
8+
-- remove this alter to see the change in models.go
9+
ALTER TABLE authors MODIFY status enum('init', 'done', 'canceled', 'processing', 'waiting') default "init" not null;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"name": "querytest",
6+
"path": "go",
7+
"schema": "schema.sql",
8+
"queries": "query.sql",
9+
"engine": "mysql",
10+
"omit_unused_structs": true
11+
}
12+
]
13+
}

0 commit comments

Comments
 (0)