From 96fc3790778bb7f2c4eb87108e5a14cc119ec8d9 Mon Sep 17 00:00:00 2001 From: Prajwal Nadig Date: Sun, 26 Jul 2026 18:46:36 +0100 Subject: [PATCH] Escape constant names in queries The `any` keyword was introduced in Go 1.18, and can be used in place of `interface{}`. This was not in the list of reserved keywords, leading to identifiers using this term in generated code. Update the logic to escape constant names, and also add `any` to the list of reserved keywords. Signed-off-by: Prajwal Nadig --- internal/codegen/golang/reserved.go | 2 ++ internal/codegen/golang/result.go | 2 +- internal/endtoend/testdata/any/pgx/v4/go/query.sql.go | 4 ++-- internal/endtoend/testdata/any/pgx/v5/go/query.sql.go | 4 ++-- internal/endtoend/testdata/any/stdlib/go/query.sql.go | 4 ++-- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/internal/codegen/golang/reserved.go b/internal/codegen/golang/reserved.go index 0461c4a2de..bcc2a38430 100644 --- a/internal/codegen/golang/reserved.go +++ b/internal/codegen/golang/reserved.go @@ -9,6 +9,8 @@ func escape(s string) string { func IsReserved(s string) bool { switch s { + case "any": + return true case "break": return true case "default": diff --git a/internal/codegen/golang/result.go b/internal/codegen/golang/result.go index c5126602da..a68c17531a 100644 --- a/internal/codegen/golang/result.go +++ b/internal/codegen/golang/result.go @@ -219,7 +219,7 @@ func buildQueries(req *plugin.GenerateRequest, options *opts.Options, enums []En gq := Query{ Cmd: query.Cmd, - ConstantName: constantName, + ConstantName: escape(constantName), FieldName: sdk.LowerTitle(query.Name) + "Stmt", MethodName: query.Name, SourceName: query.Filename, diff --git a/internal/endtoend/testdata/any/pgx/v4/go/query.sql.go b/internal/endtoend/testdata/any/pgx/v4/go/query.sql.go index f023dc75ff..1bb2829390 100644 --- a/internal/endtoend/testdata/any/pgx/v4/go/query.sql.go +++ b/internal/endtoend/testdata/any/pgx/v4/go/query.sql.go @@ -9,14 +9,14 @@ import ( "context" ) -const any = `-- name: Any :many +const any_ = `-- name: Any :many SELECT id FROM bar WHERE id = ANY($1::bigint[]) ` func (q *Queries) Any(ctx context.Context, dollar_1 []int64) ([]int64, error) { - rows, err := q.db.Query(ctx, any, dollar_1) + rows, err := q.db.Query(ctx, any_, dollar_1) if err != nil { return nil, err } diff --git a/internal/endtoend/testdata/any/pgx/v5/go/query.sql.go b/internal/endtoend/testdata/any/pgx/v5/go/query.sql.go index f023dc75ff..1bb2829390 100644 --- a/internal/endtoend/testdata/any/pgx/v5/go/query.sql.go +++ b/internal/endtoend/testdata/any/pgx/v5/go/query.sql.go @@ -9,14 +9,14 @@ import ( "context" ) -const any = `-- name: Any :many +const any_ = `-- name: Any :many SELECT id FROM bar WHERE id = ANY($1::bigint[]) ` func (q *Queries) Any(ctx context.Context, dollar_1 []int64) ([]int64, error) { - rows, err := q.db.Query(ctx, any, dollar_1) + rows, err := q.db.Query(ctx, any_, dollar_1) if err != nil { return nil, err } diff --git a/internal/endtoend/testdata/any/stdlib/go/query.sql.go b/internal/endtoend/testdata/any/stdlib/go/query.sql.go index a3f5943aeb..240bb91f02 100644 --- a/internal/endtoend/testdata/any/stdlib/go/query.sql.go +++ b/internal/endtoend/testdata/any/stdlib/go/query.sql.go @@ -11,14 +11,14 @@ import ( "github.com/lib/pq" ) -const any = `-- name: Any :many +const any_ = `-- name: Any :many SELECT id FROM bar WHERE id = ANY($1::bigint[]) ` func (q *Queries) Any(ctx context.Context, dollar_1 []int64) ([]int64, error) { - rows, err := q.db.QueryContext(ctx, any, pq.Array(dollar_1)) + rows, err := q.db.QueryContext(ctx, any_, pq.Array(dollar_1)) if err != nil { return nil, err }