MCPcopy
hub / github.com/jackc/pgx / TestQueryRowErrors

Function TestQueryRowErrors

query_test.go:971–1013  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

969}
970
971func TestQueryRowErrors(t *testing.T) {
972 t.Parallel()
973
974 conn := mustConnectString(t, os.Getenv("PGX_TEST_DATABASE"))
975 defer closeConn(t, conn)
976
977 if conn.PgConn().ParameterStatus("crdb_version") != "" {
978 t.Skip("Skipping due to known server missing point type")
979 }
980
981 type allTypes struct {
982 i16 int16
983 s string
984 }
985
986 var actual, zero allTypes
987
988 tests := []struct {
989 sql string
990 queryArgs []any
991 scanArgs []any
992 err string
993 }{
994 {"select $1::badtype", []any{"Jack"}, []any{&actual.i16}, `type "badtype" does not exist`},
995 {"SYNTAX ERROR", []any{}, []any{&actual.i16}, "SQLSTATE 42601"},
996 {"select $1::text", []any{"Jack"}, []any{&actual.i16}, "cannot scan text (OID 25) in text format into *int16"},
997 {"select $1::point", []any{int(705)}, []any{&actual.s}, "unable to encode 705 into binary format for point (OID 600)"},
998 }
999
1000 for i, tt := range tests {
1001 actual = zero
1002
1003 err := conn.QueryRow(context.Background(), tt.sql, tt.queryArgs...).Scan(tt.scanArgs...)
1004 if err == nil {
1005 t.Errorf("%d. Unexpected success (sql -> %v, queryArgs -> %v)", i, tt.sql, tt.queryArgs)
1006 }
1007 if err != nil && !strings.Contains(err.Error(), tt.err) {
1008 t.Errorf("%d. Expected error to contain %s, but got %v (sql -> %v, queryArgs -> %v)", i, tt.err, err, tt.sql, tt.queryArgs)
1009 }
1010
1011 ensureConnValid(t, conn)
1012 }
1013}
1014
1015func TestQueryRowNoResults(t *testing.T) {
1016 t.Parallel()

Callers

nothing calls this directly

Calls 8

mustConnectStringFunction · 0.85
ParameterStatusMethod · 0.80
PgConnMethod · 0.80
closeConnFunction · 0.70
ensureConnValidFunction · 0.70
ScanMethod · 0.65
QueryRowMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected