diff --git a/examples/batch/postgresql/batch.go b/examples/batch/postgresql/batch.go index a0fb44d42e..c6f9137e4b 100644 --- a/examples/batch/postgresql/batch.go +++ b/examples/batch/postgresql/batch.go @@ -14,6 +14,10 @@ import ( "github.com/jackc/pgx/v4" ) +var ( + ErrBatchAlreadyClosed = errors.New("batch already closed") +) + const booksByYear = `-- name: BooksByYear :batchmany SELECT book_id, author_id, isbn, book_type, title, year, available, tags FROM books WHERE year = $1 @@ -43,7 +47,7 @@ func (b *BooksByYearBatchResults) Query(f func(int, []Book, error)) { var items []Book if b.closed { if f != nil { - f(t, items, errors.New("batch already closed")) + f(t, items, ErrBatchAlreadyClosed) } continue } @@ -143,7 +147,7 @@ func (b *CreateBookBatchResults) QueryRow(f func(int, Book, error)) { var i Book if b.closed { if f != nil { - f(t, i, errors.New("batch already closed")) + f(t, i, ErrBatchAlreadyClosed) } continue } @@ -197,7 +201,7 @@ func (b *DeleteBookBatchResults) Exec(f func(int, error)) { for t := 0; t < b.tot; t++ { if b.closed { if f != nil { - f(t, errors.New("batch already closed")) + f(t, ErrBatchAlreadyClosed) } continue } @@ -241,7 +245,7 @@ func (b *DeleteBookNamedFuncBatchResults) Exec(f func(int, error)) { for t := 0; t < b.tot; t++ { if b.closed { if f != nil { - f(t, errors.New("batch already closed")) + f(t, ErrBatchAlreadyClosed) } continue } @@ -285,7 +289,7 @@ func (b *DeleteBookNamedSignBatchResults) Exec(f func(int, error)) { for t := 0; t < b.tot; t++ { if b.closed { if f != nil { - f(t, errors.New("batch already closed")) + f(t, ErrBatchAlreadyClosed) } continue } @@ -330,7 +334,7 @@ func (b *GetBiographyBatchResults) QueryRow(f func(int, pgtype.JSONB, error)) { var biography pgtype.JSONB if b.closed { if f != nil { - f(t, biography, errors.New("batch already closed")) + f(t, biography, ErrBatchAlreadyClosed) } continue } @@ -384,7 +388,7 @@ func (b *UpdateBookBatchResults) Exec(f func(int, error)) { for t := 0; t < b.tot; t++ { if b.closed { if f != nil { - f(t, errors.New("batch already closed")) + f(t, ErrBatchAlreadyClosed) } continue } diff --git a/internal/codegen/golang/templates/pgx/batchCode.tmpl b/internal/codegen/golang/templates/pgx/batchCode.tmpl index 42b7e0face..72ac9148b4 100644 --- a/internal/codegen/golang/templates/pgx/batchCode.tmpl +++ b/internal/codegen/golang/templates/pgx/batchCode.tmpl @@ -1,4 +1,9 @@ {{define "batchCodePgx"}} + +var ( + ErrBatchAlreadyClosed = errors.New("batch already closed") +) + {{range .GoQueries}} {{if eq (hasPrefix .Cmd ":batch") true }} const {{.ConstantName}} = {{$.Q}}-- name: {{.MethodName}} {{.Cmd}} @@ -51,7 +56,7 @@ func (b *{{.MethodName}}BatchResults) Exec(f func(int, error)) { for t := 0; t < b.tot; t++ { if b.closed { if f != nil { - f(t, errors.New("batch already closed")) + f(t, ErrBatchAlreadyClosed) } continue } @@ -74,7 +79,7 @@ func (b *{{.MethodName}}BatchResults) Query(f func(int, []{{.Ret.DefineType}}, e {{end -}} if b.closed { if f != nil { - f(t, items, errors.New("batch already closed")) + f(t, items, ErrBatchAlreadyClosed) } continue } @@ -107,7 +112,7 @@ func (b *{{.MethodName}}BatchResults) QueryRow(f func(int, {{.Ret.DefineType}}, var {{.Ret.Name}} {{.Ret.Type}} if b.closed { if f != nil { - f(t, {{if .Ret.IsPointer}}nil{{else}}{{.Ret.Name}}{{end}}, errors.New("batch already closed")) + f(t, {{if .Ret.IsPointer}}nil{{else}}{{.Ret.Name}}{{end}}, ErrBatchAlreadyClosed) } continue } diff --git a/internal/endtoend/testdata/batch/postgresql/pgx/v4/go/batch.go b/internal/endtoend/testdata/batch/postgresql/pgx/v4/go/batch.go index 829e355ac6..83904cee25 100644 --- a/internal/endtoend/testdata/batch/postgresql/pgx/v4/go/batch.go +++ b/internal/endtoend/testdata/batch/postgresql/pgx/v4/go/batch.go @@ -13,6 +13,10 @@ import ( "github.com/jackc/pgx/v4" ) +var ( + ErrBatchAlreadyClosed = errors.New("batch already closed") +) + const getValues = `-- name: GetValues :batchmany SELECT a, b FROM myschema.foo @@ -43,7 +47,7 @@ func (b *GetValuesBatchResults) Query(f func(int, []MyschemaFoo, error)) { var items []MyschemaFoo if b.closed { if f != nil { - f(t, items, errors.New("batch already closed")) + f(t, items, ErrBatchAlreadyClosed) } continue } @@ -109,7 +113,7 @@ func (b *InsertValuesBatchResults) QueryRow(f func(int, sql.NullString, error)) var a sql.NullString if b.closed { if f != nil { - f(t, a, errors.New("batch already closed")) + f(t, a, ErrBatchAlreadyClosed) } continue } @@ -159,7 +163,7 @@ func (b *UpdateValuesBatchResults) Exec(f func(int, error)) { for t := 0; t < b.tot; t++ { if b.closed { if f != nil { - f(t, errors.New("batch already closed")) + f(t, ErrBatchAlreadyClosed) } continue } diff --git a/internal/endtoend/testdata/batch/postgresql/pgx/v5/go/batch.go b/internal/endtoend/testdata/batch/postgresql/pgx/v5/go/batch.go index 5994056267..37c9be27ba 100644 --- a/internal/endtoend/testdata/batch/postgresql/pgx/v5/go/batch.go +++ b/internal/endtoend/testdata/batch/postgresql/pgx/v5/go/batch.go @@ -13,6 +13,10 @@ import ( "github.com/jackc/pgx/v5/pgtype" ) +var ( + ErrBatchAlreadyClosed = errors.New("batch already closed") +) + const getValues = `-- name: GetValues :batchmany SELECT a, b FROM myschema.foo @@ -43,7 +47,7 @@ func (b *GetValuesBatchResults) Query(f func(int, []MyschemaFoo, error)) { var items []MyschemaFoo if b.closed { if f != nil { - f(t, items, errors.New("batch already closed")) + f(t, items, ErrBatchAlreadyClosed) } continue } @@ -109,7 +113,7 @@ func (b *InsertValuesBatchResults) QueryRow(f func(int, pgtype.Text, error)) { var a pgtype.Text if b.closed { if f != nil { - f(t, a, errors.New("batch already closed")) + f(t, a, ErrBatchAlreadyClosed) } continue } @@ -159,7 +163,7 @@ func (b *UpdateValuesBatchResults) Exec(f func(int, error)) { for t := 0; t < b.tot; t++ { if b.closed { if f != nil { - f(t, errors.New("batch already closed")) + f(t, ErrBatchAlreadyClosed) } continue } diff --git a/internal/endtoend/testdata/batch_imports/postgresql/pgx/v4/go/batch.go b/internal/endtoend/testdata/batch_imports/postgresql/pgx/v4/go/batch.go index 36566b2aeb..2360490d51 100644 --- a/internal/endtoend/testdata/batch_imports/postgresql/pgx/v4/go/batch.go +++ b/internal/endtoend/testdata/batch_imports/postgresql/pgx/v4/go/batch.go @@ -13,6 +13,10 @@ import ( "github.com/jackc/pgx/v4" ) +var ( + ErrBatchAlreadyClosed = errors.New("batch already closed") +) + const getValues = `-- name: GetValues :batchmany SELECT a, b FROM myschema.foo @@ -43,7 +47,7 @@ func (b *GetValuesBatchResults) Query(f func(int, []MyschemaFoo, error)) { var items []MyschemaFoo if b.closed { if f != nil { - f(t, items, errors.New("batch already closed")) + f(t, items, ErrBatchAlreadyClosed) } continue } @@ -109,7 +113,7 @@ func (b *InsertValuesBatchResults) QueryRow(f func(int, sql.NullString, error)) var a sql.NullString if b.closed { if f != nil { - f(t, a, errors.New("batch already closed")) + f(t, a, ErrBatchAlreadyClosed) } continue } diff --git a/internal/endtoend/testdata/batch_imports/postgresql/pgx/v5/go/batch.go b/internal/endtoend/testdata/batch_imports/postgresql/pgx/v5/go/batch.go index 6a2339a6b0..63ffca98d0 100644 --- a/internal/endtoend/testdata/batch_imports/postgresql/pgx/v5/go/batch.go +++ b/internal/endtoend/testdata/batch_imports/postgresql/pgx/v5/go/batch.go @@ -13,6 +13,10 @@ import ( "github.com/jackc/pgx/v5/pgtype" ) +var ( + ErrBatchAlreadyClosed = errors.New("batch already closed") +) + const getValues = `-- name: GetValues :batchmany SELECT a, b FROM myschema.foo @@ -43,7 +47,7 @@ func (b *GetValuesBatchResults) Query(f func(int, []MyschemaFoo, error)) { var items []MyschemaFoo if b.closed { if f != nil { - f(t, items, errors.New("batch already closed")) + f(t, items, ErrBatchAlreadyClosed) } continue } @@ -109,7 +113,7 @@ func (b *InsertValuesBatchResults) QueryRow(f func(int, pgtype.Text, error)) { var a pgtype.Text if b.closed { if f != nil { - f(t, a, errors.New("batch already closed")) + f(t, a, ErrBatchAlreadyClosed) } continue } diff --git a/internal/endtoend/testdata/emit_result_and_params_struct_pointers/postgresql/pgx/v4/go/batch.go b/internal/endtoend/testdata/emit_result_and_params_struct_pointers/postgresql/pgx/v4/go/batch.go index 7e4e20e40f..39eecb7af8 100644 --- a/internal/endtoend/testdata/emit_result_and_params_struct_pointers/postgresql/pgx/v4/go/batch.go +++ b/internal/endtoend/testdata/emit_result_and_params_struct_pointers/postgresql/pgx/v4/go/batch.go @@ -13,6 +13,10 @@ import ( "github.com/jackc/pgx/v4" ) +var ( + ErrBatchAlreadyClosed = errors.New("batch already closed") +) + const insertValues = `-- name: InsertValues :batchone INSERT INTO foo (a, b) VALUES ($1, $2) @@ -50,7 +54,7 @@ func (b *InsertValuesBatchResults) QueryRow(f func(int, *Foo, error)) { var i Foo if b.closed { if f != nil { - f(t, nil, errors.New("batch already closed")) + f(t, nil, ErrBatchAlreadyClosed) } continue } diff --git a/internal/endtoend/testdata/emit_result_and_params_struct_pointers/postgresql/pgx/v5/go/batch.go b/internal/endtoend/testdata/emit_result_and_params_struct_pointers/postgresql/pgx/v5/go/batch.go index 1b4a713582..6d4d98f7c5 100644 --- a/internal/endtoend/testdata/emit_result_and_params_struct_pointers/postgresql/pgx/v5/go/batch.go +++ b/internal/endtoend/testdata/emit_result_and_params_struct_pointers/postgresql/pgx/v5/go/batch.go @@ -13,6 +13,10 @@ import ( "github.com/jackc/pgx/v5/pgtype" ) +var ( + ErrBatchAlreadyClosed = errors.New("batch already closed") +) + const insertValues = `-- name: InsertValues :batchone INSERT INTO foo (a, b) VALUES ($1, $2) @@ -50,7 +54,7 @@ func (b *InsertValuesBatchResults) QueryRow(f func(int, *Foo, error)) { var i Foo if b.closed { if f != nil { - f(t, nil, errors.New("batch already closed")) + f(t, nil, ErrBatchAlreadyClosed) } continue }