...

Source file src/github.com/jackc/pgx/v5/pipeline_test.go

Documentation: github.com/jackc/pgx/v5

     1  package pgx_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/jackc/pgx/v5"
     8  	"github.com/jackc/pgx/v5/pgconn"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestPipelineWithoutPreparedOrDescribedStatements(t *testing.T) {
    13  	t.Parallel()
    14  
    15  	defaultConnTestRunner.RunTest(context.Background(), t, func(ctx context.Context, t testing.TB, conn *pgx.Conn) {
    16  		pipeline := conn.PgConn().StartPipeline(ctx)
    17  
    18  		eqb := pgx.ExtendedQueryBuilder{}
    19  
    20  		err := eqb.Build(conn.TypeMap(), nil, []any{1, 2})
    21  		require.NoError(t, err)
    22  		pipeline.SendQueryParams(`select $1::bigint + $2::bigint`, eqb.ParamValues, nil, eqb.ParamFormats, eqb.ResultFormats)
    23  
    24  		err = eqb.Build(conn.TypeMap(), nil, []any{3, 4, 5})
    25  		require.NoError(t, err)
    26  		pipeline.SendQueryParams(`select $1::bigint + $2::bigint + $3::bigint`, eqb.ParamValues, nil, eqb.ParamFormats, eqb.ResultFormats)
    27  
    28  		err = pipeline.Sync()
    29  		require.NoError(t, err)
    30  
    31  		results, err := pipeline.GetResults()
    32  		require.NoError(t, err)
    33  		rr, ok := results.(*pgconn.ResultReader)
    34  		require.True(t, ok)
    35  		rows := pgx.RowsFromResultReader(conn.TypeMap(), rr)
    36  
    37  		rowCount := 0
    38  		var n int64
    39  		for rows.Next() {
    40  			err = rows.Scan(&n)
    41  			require.NoError(t, err)
    42  			rowCount++
    43  		}
    44  		require.NoError(t, rows.Err())
    45  		require.Equal(t, 1, rowCount)
    46  		require.Equal(t, "SELECT 1", rows.CommandTag().String())
    47  		require.EqualValues(t, 3, n)
    48  
    49  		results, err = pipeline.GetResults()
    50  		require.NoError(t, err)
    51  		rr, ok = results.(*pgconn.ResultReader)
    52  		require.True(t, ok)
    53  		rows = pgx.RowsFromResultReader(conn.TypeMap(), rr)
    54  
    55  		rowCount = 0
    56  		n = 0
    57  		for rows.Next() {
    58  			err = rows.Scan(&n)
    59  			require.NoError(t, err)
    60  			rowCount++
    61  		}
    62  		require.NoError(t, rows.Err())
    63  		require.Equal(t, 1, rowCount)
    64  		require.Equal(t, "SELECT 1", rows.CommandTag().String())
    65  		require.EqualValues(t, 12, n)
    66  
    67  		results, err = pipeline.GetResults()
    68  		require.NoError(t, err)
    69  		_, ok = results.(*pgconn.PipelineSync)
    70  		require.True(t, ok)
    71  
    72  		results, err = pipeline.GetResults()
    73  		require.NoError(t, err)
    74  		require.Nil(t, results)
    75  
    76  		err = pipeline.Close()
    77  		require.NoError(t, err)
    78  	})
    79  }
    80  

View as plain text