(t *testing.T)
| 4004 | } |
| 4005 | |
| 4006 | func TestPipelineCloseReadsUnreadResults(t *testing.T) { |
| 4007 | t.Parallel() |
| 4008 | |
| 4009 | ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) |
| 4010 | defer cancel() |
| 4011 | |
| 4012 | pgConn, err := pgconn.Connect(ctx, os.Getenv("PGX_TEST_DATABASE")) |
| 4013 | require.NoError(t, err) |
| 4014 | defer closeConn(t, pgConn) |
| 4015 | |
| 4016 | sd, err := pgConn.Prepare(ctx, "ps", "select $1::text as msg", nil) |
| 4017 | require.NoError(t, err) |
| 4018 | |
| 4019 | pipeline := pgConn.StartPipeline(ctx) |
| 4020 | pipeline.SendQueryParams(`select 1`, nil, nil, nil, nil) |
| 4021 | pipeline.SendQueryParams(`select 2`, nil, nil, nil, nil) |
| 4022 | pipeline.SendQueryParams(`select 3`, nil, nil, nil, nil) |
| 4023 | err = pipeline.Sync() |
| 4024 | require.NoError(t, err) |
| 4025 | |
| 4026 | pipeline.SendQueryParams(`select 4`, nil, nil, nil, nil) |
| 4027 | pipeline.SendQueryParams(`select 5`, nil, nil, nil, nil) |
| 4028 | err = pipeline.Sync() |
| 4029 | require.NoError(t, err) |
| 4030 | |
| 4031 | pipeline.SendQueryStatement(sd, [][]byte{[]byte("6")}, nil, nil) |
| 4032 | pipeline.SendQueryStatement(sd, [][]byte{[]byte("7")}, nil, nil) |
| 4033 | err = pipeline.Sync() |
| 4034 | require.NoError(t, err) |
| 4035 | |
| 4036 | results, err := pipeline.GetResults() |
| 4037 | require.NoError(t, err) |
| 4038 | rr, ok := results.(*pgconn.ResultReader) |
| 4039 | require.Truef(t, ok, "expected ResultReader, got: %#v", results) |
| 4040 | readResult := rr.Read() |
| 4041 | require.NoError(t, readResult.Err) |
| 4042 | require.Len(t, readResult.Rows, 1) |
| 4043 | require.Len(t, readResult.Rows[0], 1) |
| 4044 | require.Equal(t, "1", string(readResult.Rows[0][0])) |
| 4045 | |
| 4046 | err = pipeline.Close() |
| 4047 | require.NoError(t, err) |
| 4048 | |
| 4049 | ensureConnValid(t, pgConn) |
| 4050 | } |
| 4051 | |
| 4052 | func TestPipelineCloseDetectsUnsyncedRequests(t *testing.T) { |
| 4053 | t.Parallel() |
nothing calls this directly
no test coverage detected