github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/tests/integration/query_read_row_test.go (about)

     1  //go:build integration
     2  // +build integration
     3  
     4  package integration
     5  
     6  import (
     7  	"context"
     8  	"os"
     9  	"testing"
    10  	"time"
    11  
    12  	"github.com/stretchr/testify/require"
    13  
    14  	"github.com/ydb-platform/ydb-go-sdk/v3"
    15  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/version"
    16  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/xtest"
    17  	"github.com/ydb-platform/ydb-go-sdk/v3/log"
    18  	"github.com/ydb-platform/ydb-go-sdk/v3/query"
    19  	"github.com/ydb-platform/ydb-go-sdk/v3/trace"
    20  )
    21  
    22  func TestQueryReadRow(t *testing.T) {
    23  	if version.Lt(os.Getenv("YDB_VERSION"), "24.1") {
    24  		t.Skip("query service not allowed in YDB version '" + os.Getenv("YDB_VERSION") + "'")
    25  	}
    26  
    27  	ctx, cancel := context.WithCancel(xtest.Context(t))
    28  	defer cancel()
    29  
    30  	db, err := ydb.Open(ctx,
    31  		os.Getenv("YDB_CONNECTION_STRING"),
    32  		ydb.WithAccessTokenCredentials(os.Getenv("YDB_ACCESS_TOKEN_CREDENTIALS")),
    33  		ydb.WithSessionPoolSizeLimit(10),
    34  		ydb.WithTraceQuery(
    35  			log.Query(
    36  				log.Default(os.Stdout,
    37  					log.WithLogQuery(),
    38  					log.WithColoring(),
    39  					log.WithMinLevel(log.INFO),
    40  				),
    41  				trace.QueryEvents,
    42  			),
    43  		),
    44  	)
    45  	require.NoError(t, err)
    46  
    47  	row, err := db.Query().QueryRow(ctx, `
    48  		DECLARE $p1 AS Text;
    49  		DECLARE $p2 AS Uint64;
    50  		DECLARE $p3 AS Interval;
    51  		SELECT $p1, $p2, $p3;`,
    52  		query.WithParameters(
    53  			ydb.ParamsBuilder().
    54  				Param("$p1").Text("test").
    55  				Param("$p2").Uint64(100500000000).
    56  				Param("$p3").Interval(time.Duration(100500000000)).
    57  				Build(),
    58  		),
    59  		query.WithSyntax(query.SyntaxYQL),
    60  		query.WithIdempotent(),
    61  	)
    62  	require.NoError(t, err)
    63  
    64  	var (
    65  		p1 string
    66  		p2 uint64
    67  		p3 time.Duration
    68  	)
    69  	err = row.Scan(&p1, &p2, &p3)
    70  	require.NoError(t, err)
    71  	require.EqualValues(t, "test", p1)
    72  	require.EqualValues(t, 100500000000, p2)
    73  	require.EqualValues(t, time.Duration(100500000000), p3)
    74  }