@@ -7,12 +7,14 @@ import (
77 "context"
88 "fmt"
99 "os"
10+ "strconv"
1011 "testing"
1112 "time"
1213
1314 "github.com/stretchr/testify/require"
1415
1516 "github.com/ydb-platform/ydb-go-sdk/v3"
17+ "github.com/ydb-platform/ydb-go-sdk/v3/internal/value"
1618 "github.com/ydb-platform/ydb-go-sdk/v3/internal/version"
1719 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xtest"
1820 "github.com/ydb-platform/ydb-go-sdk/v3/query"
@@ -32,40 +34,55 @@ func TestQueryRange(t *testing.T) {
3234 )
3335 require .NoError (t , err )
3436 t .Run ("Execute" , func (t * testing.T ) {
35- var (
36- p1 string
37- p2 uint64
38- p3 time.Duration
39- )
37+ listItems := make ([]value.Value , 1000 )
38+ for i := range make ([]struct {}, 1000 ) {
39+ listItems [i ] = value .StructValue (
40+ value.StructValueField {
41+ Name : "p1" ,
42+ V : value .TextValue (strconv .Itoa (i )),
43+ },
44+ value.StructValueField {
45+ Name : "p2" ,
46+ V : value .Uint64Value (uint64 (i )),
47+ },
48+ value.StructValueField {
49+ Name : "p3" ,
50+ V : value .IntervalValueFromDuration (time .Duration (i * 1000 )),
51+ },
52+ )
53+ }
4054 r , err := db .Query ().Execute (ctx , `
41- DECLARE $p1 AS Text;
42- DECLARE $p2 AS Uint64;
43- DECLARE $p3 AS Interval;
44- SELECT $p1, $p2, $p3;
45- ` ,
55+ DECLARE $values AS List<Struct<p1:Text,p2:Uint64,p3:Interval>>;
56+ SELECT p1, p2, p3 FROM AS_TABLE($values);
57+ ` ,
4658 query .WithParameters (
47- ydb .ParamsBuilder ().
48- Param ("$p1" ).Text ("test" ).
49- Param ("$p2" ).Uint64 (100500000000 ).
50- Param ("$p3" ).Interval (time .Duration (100500000000 )).
51- Build (),
59+ ydb .ParamsBuilder ().Param ("$values" ).BeginList ().AddItems (listItems ... ).EndList ().Build (),
5260 ),
53- query .WithSyntax (query .SyntaxYQL ),
5461 )
5562 require .NoError (t , err )
63+ count := 0
5664 for rs , err := range r .Range (ctx ) {
5765 require .NoError (t , err )
5866 for row , err := range rs .Range (ctx ) {
5967 require .NoError (t , err )
6068
69+ var (
70+ p1 string
71+ p2 uint64
72+ p3 time.Duration
73+ )
74+
6175 err = row .Scan (& p1 , & p2 , & p3 )
6276 require .NoError (t , err )
6377
64- require .EqualValues (t , "test" , p1 )
65- require .EqualValues (t , 100500000000 , p2 )
66- require .EqualValues (t , time .Duration (100500000000 ), p3 )
78+ require .EqualValues (t , strconv .Itoa (count ), p1 )
79+ require .EqualValues (t , count , p2 )
80+ require .EqualValues (t , time .Duration (count * 1000 ), p3 )
81+
82+ count ++
6783 }
6884 }
85+ require .EqualValues (t , 1000 , count )
6986 })
7087 t .Run ("Do" , func (t * testing.T ) {
7188 var (
0 commit comments