Skip to content

Commit 3b21fdf

Browse files
fix: MySQL slice shadowing database/sql import (#2332)
* fix: MySQL slice with database/sql type
1 parent 3c17815 commit 3b21fdf

File tree

8 files changed

+138
-46
lines changed

8 files changed

+138
-46
lines changed

examples/booktest/sqlite/query.sql.go

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

internal/codegen/golang/templates/stdlib/queryCode.tmpl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
120120

121121
{{define "queryCodeStdExec"}}
122122
{{- if .Arg.HasSqlcSlices }}
123-
sql := {{.ConstantName}}
123+
query := {{.ConstantName}}
124124
var queryParams []interface{}
125125
{{- if .Arg.Struct }}
126126
{{- $arg := .Arg }}
@@ -130,9 +130,9 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
130130
for _, v := range {{$arg.Name}}.{{.Name}} {
131131
queryParams = append(queryParams, v)
132132
}
133-
sql = strings.Replace(sql, "/*SLICE:{{.Column.Name}}*/?", strings.Repeat(",?", len({{$arg.Name}}.{{.Name}}))[1:], 1)
133+
query = strings.Replace(query, "/*SLICE:{{.Column.Name}}*/?", strings.Repeat(",?", len({{$arg.Name}}.{{.Name}}))[1:], 1)
134134
} else {
135-
sql = strings.Replace(sql, "/*SLICE:{{.Column.Name}}*/?", "NULL", 1)
135+
query = strings.Replace(query, "/*SLICE:{{.Column.Name}}*/?", "NULL", 1)
136136
}
137137
{{- else }}
138138
queryParams = append(queryParams, {{$arg.Name}}.{{.Name}})
@@ -147,12 +147,12 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
147147
for _, v := range {{.Arg.Name}} {
148148
queryParams = append(queryParams, v)
149149
}
150-
sql = strings.Replace(sql, "/*SLICE:{{.Arg.Column.Name}}*/?", strings.Repeat(",?", len({{.Arg.Name}}))[1:], 1)
150+
query = strings.Replace(query, "/*SLICE:{{.Arg.Column.Name}}*/?", strings.Repeat(",?", len({{.Arg.Name}}))[1:], 1)
151151
} else {
152-
sql = strings.Replace(sql, "/*SLICE:{{.Arg.Column.Name}}*/?", "NULL", 1)
152+
query = strings.Replace(query, "/*SLICE:{{.Arg.Column.Name}}*/?", "NULL", 1)
153153
}
154154
{{- end }}
155-
{{ queryRetval . }} {{ queryMethod . }}(ctx, sql, queryParams...)
155+
{{ queryRetval . }} {{ queryMethod . }}(ctx, query, queryParams...)
156156
{{- else if emitPreparedQueries }}
157157
{{- queryRetval . }} {{ queryMethod . }}(ctx, q.{{.FieldName}}, {{.ConstantName}}, {{.Arg.Params}})
158158
{{- else}}

internal/endtoend/testdata/sqlc_slice/mysql/go/models.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

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

internal/endtoend/testdata/sqlc_slice/mysql/query.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CREATE TABLE foo (id int not null, name text not null);
1+
CREATE TABLE foo (id int not null, name text not null, bar text null);
22

33
/* name: FuncParamIdent :many */
44
SELECT name FROM foo
@@ -17,3 +17,7 @@ WHERE id IN (sqlc.slice('favourites'));
1717
/* name: SliceExec :exec */
1818
UPDATE foo SET name = sqlc.arg(slug)
1919
WHERE id IN (sqlc.slice(favourites));
20+
21+
/* name: FuncNullable :many */
22+
SELECT bar FROM foo
23+
WHERE id IN (sqlc.slice('favourites'));

internal/endtoend/testdata/sqlc_slice/sqlite/go/models.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/sqlc_slice/sqlite/go/query.sql.go

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

internal/endtoend/testdata/sqlc_slice/sqlite/query.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CREATE TABLE foo (id int not null, name text not null);
1+
CREATE TABLE foo (id int not null, name text not null, bar text);
22

33
/* name: FuncParamIdent :many */
44
SELECT name FROM foo
@@ -17,3 +17,7 @@ WHERE id IN (sqlc.slice('favourites'));
1717
/* name: SliceExec :exec */
1818
UPDATE foo SET name = sqlc.arg(slug)
1919
WHERE id IN (sqlc.slice(favourites));
20+
21+
/* name: FuncNullable :many */
22+
SELECT bar FROM foo
23+
WHERE id IN (sqlc.slice('favourites'));

0 commit comments

Comments
 (0)