Skip to content

Commit 11084ac

Browse files
authored
feat(postgres): Add support for CREATE TABLE a ( LIKE b ) (#1355)
1 parent a56a9c1 commit 11084ac

File tree

7 files changed

+125
-0
lines changed

7 files changed

+125
-0
lines changed

internal/endtoend/testdata/create_table_like/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/create_table_like/postgresql/go/models.go

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

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

Lines changed: 40 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: GetAll :many */
2+
SELECT * FROM super_users;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
CREATE TABLE users (
2+
id serial NOT NULL PRIMARY KEY,
3+
first_name varchar(255) NOT NULL
4+
);
5+
6+
ALTER TABLE users
7+
ADD COLUMN last_name varchar(255);
8+
9+
CREATE TABLE super_users ( LIKE users );
10+
11+
ALTER TABLE users
12+
ADD COLUMN age integer NOT NULL;
13+
14+
ALTER TABLE users
15+
DROP COLUMN first_name;
16+
17+
ALTER TABLE super_users
18+
ADD COLUMN date_of_birth TIMESTAMP;
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+
"name": "querytest",
6+
"path": "go",
7+
"schema": "schema.sql",
8+
"queries": "query.sql",
9+
"engine": "postgresql"
10+
}
11+
]
12+
}

internal/engine/postgresql/parse.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,10 @@ func translate(node *nodes.Node) (ast.Node, error) {
384384
primaryKey[key.Node.(*nodes.Node_String_).String_.Str] = true
385385
}
386386
}
387+
388+
case *nodes.Node_TableLikeClause:
389+
rel := parseRelationFromRangeVar(item.TableLikeClause.Relation)
390+
create.ReferTable = rel.TableName()
387391
}
388392
}
389393
for _, elt := range n.TableElts {

0 commit comments

Comments
 (0)