Skip to content

Commit 513e0fe

Browse files
authored
codegen: Correctly generate CopyFrom columns for single-column copyfroms (#2185)
1 parent d4902a6 commit 513e0fe

File tree

16 files changed

+262
-1
lines changed

16 files changed

+262
-1
lines changed

internal/codegen/golang/query.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type QueryValue struct {
1212
Emit bool
1313
EmitPointer bool
1414
Name string
15+
DBName string // The name of the field in the database. Only set if Struct==nil.
1516
Struct *Struct
1617
Typ string
1718
SQLDriver SQLDriver
@@ -116,7 +117,7 @@ func (v QueryValue) Params() string {
116117

117118
func (v QueryValue) ColumnNames() string {
118119
if v.Struct == nil {
119-
return fmt.Sprintf("[]string{%q}", v.Name)
120+
return fmt.Sprintf("[]string{%q}", v.DBName)
120121
}
121122
escapedNames := make([]string, len(v.Struct.Fields))
122123
for i, f := range v.Struct.Fields {

internal/codegen/golang/result.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ func buildQueries(req *plugin.CodeGenRequest, structs []Struct) ([]Query, error)
166166
p := query.Params[0]
167167
gq.Arg = QueryValue{
168168
Name: paramName(p),
169+
DBName: p.Column.GetName(),
169170
Typ: goType(req, p.Column),
170171
SQLDriver: sqlpkg,
171172
}
@@ -198,6 +199,7 @@ func buildQueries(req *plugin.CodeGenRequest, structs []Struct) ([]Query, error)
198199
}
199200
gq.Ret = QueryValue{
200201
Name: name,
202+
DBName: name,
201203
Typ: goType(req, c),
202204
SQLDriver: sqlpkg,
203205
}

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/copyfrom.go

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

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/db.go

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

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/models.go

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

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/querier.go

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

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/query.sql.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
CREATE TABLE authors (
2+
author_id SERIAL PRIMARY KEY
3+
);
4+
5+
-- name: CreateAuthors :copyfrom
6+
INSERT INTO authors (author_id) VALUES ($1);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"engine": "postgresql",
7+
"sql_package": "pgx/v4",
8+
"name": "querytest",
9+
"schema": "query.sql",
10+
"queries": "query.sql",
11+
"emit_interface": true
12+
}
13+
]
14+
}

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/copyfrom.go

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

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/db.go

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

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/models.go

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

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/querier.go

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

internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/query.sql.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
CREATE TABLE authors (
2+
author_id SERIAL PRIMARY KEY
3+
);
4+
5+
-- name: CreateAuthors :copyfrom
6+
INSERT INTO authors (author_id) VALUES ($1);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"engine": "postgresql",
7+
"sql_package": "pgx/v5",
8+
"name": "querytest",
9+
"schema": "query.sql",
10+
"queries": "query.sql",
11+
"emit_interface": true
12+
}
13+
]
14+
}

0 commit comments

Comments
 (0)