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

Function TestPipelineFlushWithError

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

Source from the content-addressed store, hash-verified

3873}
3874
3875func TestPipelineFlushWithError(t *testing.T) {
3876 t.Parallel()
3877
3878 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
3879 defer cancel()
3880
3881 pgConn, err := pgconn.Connect(ctx, os.Getenv("PGX_TEST_DATABASE"))
3882 require.NoError(t, err)
3883 defer closeConn(t, pgConn)
3884
3885 pipeline := pgConn.StartPipeline(ctx)
3886 pipeline.SendQueryParams(`select 1`, nil, nil, nil, nil)
3887 pipeline.SendQueryParams(`select 1/(3-n) from generate_series(1,10) n`, nil, nil, nil, nil)
3888 pipeline.SendQueryParams(`select 2`, nil, nil, nil, nil)
3889 pipeline.SendFlushRequest()
3890 err = pipeline.Flush()
3891 require.NoError(t, err)
3892
3893 results, err := pipeline.GetResults()
3894 require.NoError(t, err)
3895 rr, ok := results.(*pgconn.ResultReader)
3896 require.Truef(t, ok, "expected ResultReader, got: %#v", results)
3897 readResult := rr.Read()
3898 require.NoError(t, readResult.Err)
3899 require.Len(t, readResult.Rows, 1)
3900 require.Len(t, readResult.Rows[0], 1)
3901 require.Equal(t, "1", string(readResult.Rows[0][0]))
3902
3903 results, err = pipeline.GetResults()
3904 require.NoError(t, err)
3905 rr, ok = results.(*pgconn.ResultReader)
3906 require.Truef(t, ok, "expected ResultReader, got: %#v", results)
3907 readResult = rr.Read()
3908 var pgErr *pgconn.PgError
3909 require.ErrorAs(t, readResult.Err, &pgErr)
3910 require.Equal(t, "22012", pgErr.Code)
3911
3912 results, err = pipeline.GetResults()
3913 require.NoError(t, err)
3914 require.Nil(t, results)
3915
3916 pipeline.SendQueryParams(`select 3`, nil, nil, nil, nil)
3917 pipeline.SendFlushRequest()
3918 err = pipeline.Flush()
3919 require.NoError(t, err)
3920
3921 results, err = pipeline.GetResults()
3922 require.NoError(t, err)
3923 require.Nil(t, results)
3924
3925 pipeline.SendQueryParams(`select 4`, nil, nil, nil, nil)
3926 pipeline.SendPipelineSync()
3927 pipeline.SendQueryParams(`select 5`, nil, nil, nil, nil)
3928 pipeline.SendFlushRequest()
3929 err = pipeline.Flush()
3930 require.NoError(t, err)
3931
3932 results, err = pipeline.GetResults()

Callers

nothing calls this directly

Calls 13

ConnectFunction · 0.92
StartPipelineMethod · 0.80
SendQueryParamsMethod · 0.80
SendFlushRequestMethod · 0.80
GetResultsMethod · 0.80
SendPipelineSyncMethod · 0.80
SyncMethod · 0.80
closeConnFunction · 0.70
ensureConnValidFunction · 0.70
LenMethod · 0.65
CloseMethod · 0.65
FlushMethod · 0.45

Tested by

no test coverage detected