https://github.com/jackc/pgx/issues/1334
(t *testing.T)
| 262 | |
| 263 | // https://github.com/jackc/pgx/issues/1334 |
| 264 | func TestCollectOneRowPrefersPostgreSQLErrorOverErrNoRows(t *testing.T) { |
| 265 | defaultConnTestRunner.RunTest(context.Background(), t, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { |
| 266 | _, err := conn.Exec(ctx, `create temporary table t (name text not null unique)`) |
| 267 | require.NoError(t, err) |
| 268 | |
| 269 | var name string |
| 270 | rows, _ := conn.Query(ctx, `insert into t (name) values ('foo') returning name`) |
| 271 | name, err = pgx.CollectOneRow(rows, func(row pgx.CollectableRow) (string, error) { |
| 272 | var n string |
| 273 | err := row.Scan(&n) |
| 274 | return n, err |
| 275 | }) |
| 276 | require.NoError(t, err) |
| 277 | require.Equal(t, "foo", name) |
| 278 | |
| 279 | rows, _ = conn.Query(ctx, `insert into t (name) values ('foo') returning name`) |
| 280 | name, err = pgx.CollectOneRow(rows, func(row pgx.CollectableRow) (string, error) { |
| 281 | var n string |
| 282 | err := row.Scan(&n) |
| 283 | return n, err |
| 284 | }) |
| 285 | require.Error(t, err) |
| 286 | var pgErr *pgconn.PgError |
| 287 | require.ErrorAs(t, err, &pgErr) |
| 288 | require.Equal(t, "23505", pgErr.Code) |
| 289 | require.Equal(t, "", name) |
| 290 | }) |
| 291 | } |
| 292 | |
| 293 | func TestCollectExactlyOneRow(t *testing.T) { |
| 294 | defaultConnTestRunner.RunTest(context.Background(), t, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { |