From d8311c86239eebe36e9882760297fd85197add3c Mon Sep 17 00:00:00 2001 From: aimuz Date: Wed, 21 Feb 2024 02:15:40 +0000 Subject: database/sql: wrap errors with %w in driverArgsConnLocked Use fmt.Errorf %w verb to wrap errors in driverArgsConnLocked, which allows for easier unwrapping and checking of error types. Add tests in sql_test.go to ensure that Stmt.Exec and Stmt.Query correctly wrap underlying Valuer errors, adhering to the new change. Fixes #64707. Change-Id: Id9f80e265735d0849ee7abba63e58e4c26e658ad GitHub-Last-Rev: 0df367e0fb5b213513d4e0ab7f5a87984798f96d GitHub-Pull-Request: golang/go#64728 Reviewed-on: https://go-review.googlesource.com/c/go/+/550116 Reviewed-by: Ian Lance Taylor Reviewed-by: Carlos Amedee Reviewed-by: Mauri de Souza Meneguzzo Auto-Submit: Ian Lance Taylor LUCI-TryBot-Result: Go LUCI --- src/database/sql/driver/types.go | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/database/sql/driver') diff --git a/src/database/sql/driver/types.go b/src/database/sql/driver/types.go index 0380572ab1..a322f85277 100644 --- a/src/database/sql/driver/types.go +++ b/src/database/sql/driver/types.go @@ -34,6 +34,10 @@ type ValueConverter interface { // Valuer is the interface providing the Value method. // +// Errors returned by the [Value] method are wrapped by the database/sql package. +// This allows callers to use [errors.Is] for precise error handling after operations +// like [database/sql.Query], [database/sql.Exec], or [database/sql.QueryRow]. +// // Types implementing Valuer interface are able to convert // themselves to a driver [Value]. type Valuer interface { -- cgit v1.3