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

Function TestPipelinePrepare

pgconn/pgconn_test.go:3204–3277  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

3202}
3203
3204func TestPipelinePrepare(t *testing.T) {
3205 t.Parallel()
3206
3207 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
3208 defer cancel()
3209
3210 pgConn, err := pgconn.Connect(ctx, os.Getenv("PGX_TEST_DATABASE"))
3211 require.NoError(t, err)
3212 defer closeConn(t, pgConn)
3213
3214 result := pgConn.ExecParams(ctx, `create temporary table t (id text primary key)`, nil, nil, nil, nil).Read()
3215 require.NoError(t, result.Err)
3216
3217 pipeline := pgConn.StartPipeline(ctx)
3218 pipeline.SendPrepare("selectInt", "select $1::bigint as a", nil)
3219 pipeline.SendPrepare("selectText", "select $1::text as b", nil)
3220 pipeline.SendPrepare("selectNoParams", "select 42 as c", nil)
3221 pipeline.SendPrepare("insertNoResults", "insert into t (id) values ($1)", nil)
3222 pipeline.SendPrepare("insertNoParamsOrResults", "insert into t (id) values ('foo')", nil)
3223 err = pipeline.Sync()
3224 require.NoError(t, err)
3225
3226 results, err := pipeline.GetResults()
3227 require.NoError(t, err)
3228 sd, ok := results.(*pgconn.StatementDescription)
3229 require.Truef(t, ok, "expected StatementDescription, got: %#v", results)
3230 require.Len(t, sd.Fields, 1)
3231 require.Equal(t, "a", sd.Fields[0].Name)
3232 require.Equal(t, []uint32{pgtype.Int8OID}, sd.ParamOIDs)
3233
3234 results, err = pipeline.GetResults()
3235 require.NoError(t, err)
3236 sd, ok = results.(*pgconn.StatementDescription)
3237 require.Truef(t, ok, "expected StatementDescription, got: %#v", results)
3238 require.Len(t, sd.Fields, 1)
3239 require.Equal(t, "b", sd.Fields[0].Name)
3240 require.Equal(t, []uint32{pgtype.TextOID}, sd.ParamOIDs)
3241
3242 results, err = pipeline.GetResults()
3243 require.NoError(t, err)
3244 sd, ok = results.(*pgconn.StatementDescription)
3245 require.Truef(t, ok, "expected StatementDescription, got: %#v", results)
3246 require.Len(t, sd.Fields, 1)
3247 require.Equal(t, "c", sd.Fields[0].Name)
3248 require.Equal(t, []uint32{}, sd.ParamOIDs)
3249
3250 results, err = pipeline.GetResults()
3251 require.NoError(t, err)
3252 sd, ok = results.(*pgconn.StatementDescription)
3253 require.Truef(t, ok, "expected StatementDescription, got: %#v", results)
3254 require.Len(t, sd.Fields, 0)
3255 require.Equal(t, []uint32{pgtype.TextOID}, sd.ParamOIDs)
3256
3257 results, err = pipeline.GetResults()
3258 require.NoError(t, err)
3259 sd, ok = results.(*pgconn.StatementDescription)
3260 require.Truef(t, ok, "expected StatementDescription, got: %#v", results)
3261 require.Len(t, sd.Fields, 0)

Callers

nothing calls this directly

Calls 11

ConnectFunction · 0.92
StartPipelineMethod · 0.80
SendPrepareMethod · 0.80
SyncMethod · 0.80
GetResultsMethod · 0.80
closeConnFunction · 0.70
ensureConnValidFunction · 0.70
LenMethod · 0.65
CloseMethod · 0.65
ReadMethod · 0.45
ExecParamsMethod · 0.45

Tested by

no test coverage detected