(t *testing.T)
| 3873 | } |
| 3874 | |
| 3875 | func 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() |
nothing calls this directly
no test coverage detected