Skip to content

Commit 0ebe855

Browse files
authored
fix: prevent batch infinite loop with arg length (#1794)
1 parent fadf97a commit 0ebe855

File tree

6 files changed

+251
-166
lines changed

6 files changed

+251
-166
lines changed

examples/batch/postgresql/batch.go

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

examples/batch/postgresql/db_test.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,19 +122,24 @@ func TestBatchBooks(t *testing.T) {
122122
}
123123
batchDelete := dq.DeleteBook(ctx, deleteBooksParams)
124124
numDeletesProcessed := 0
125+
wantNumDeletesProcessed := 2
125126
batchDelete.Exec(func(i int, err error) {
126-
numDeletesProcessed++
127-
if err != nil {
127+
if err != nil && err.Error() != "batch already closed" {
128128
t.Fatalf("error deleting book %d: %s", deleteBooksParams[i], err)
129129
}
130-
if i == len(deleteBooksParams)-3 {
130+
131+
if err == nil {
132+
numDeletesProcessed++
133+
}
134+
135+
if i == wantNumDeletesProcessed-1 {
131136
// close batch operation before processing all errors from delete operation
132137
if err := batchDelete.Close(); err != nil {
133138
t.Fatalf("failed to close batch operation: %s", err)
134139
}
135140
}
136141
})
137-
if numDeletesProcessed != 2 {
138-
t.Fatalf("expected Close to short-circuit record processing (expected 2; got %d)", numDeletesProcessed)
142+
if numDeletesProcessed != wantNumDeletesProcessed {
143+
t.Fatalf("expected Close to short-circuit record processing (expected %d; got %d)", wantNumDeletesProcessed, numDeletesProcessed)
139144
}
140145
}

internal/codegen/golang/imports.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ func (i *importer) batchImports(filename string) fileImports {
445445
})
446446

447447
std["context"] = struct{}{}
448+
std["errors"] = struct{}{}
448449
pkg[ImportSpec{Path: "github.com/jackc/pgx/v4"}] = struct{}{}
449450

450451
return sortedImports(std, pkg)

0 commit comments

Comments
 (0)