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 }