@@ -19,6 +19,19 @@ import (
1919 "github.com/ydb-platform/ydb-go-sdk/v3/query"
2020)
2121
22+ type testStringScanner struct {
23+ field string
24+ }
25+
26+ func (v * testStringScanner ) Scan (value any ) error {
27+ vs , ok := value .(string )
28+ if ! ok {
29+ return fmt .Errorf ("unexpected type of value %v" , value )
30+ }
31+ v .field = vs
32+ return nil
33+ }
34+
2235func TestQueryRange (t * testing.T ) {
2336 ctx , cancel := context .WithCancel (xtest .Context (t ))
2437 defer cancel ()
@@ -84,19 +97,22 @@ func TestQueryRange(t *testing.T) {
8497 p1 string
8598 p2 uint64
8699 p3 time.Duration
100+ p4 testStringScanner
87101 )
88102 err := db .Query ().Do (ctx , func (ctx context.Context , s query.Session ) error {
89103 r , err := s .Query (ctx , `
90104 DECLARE $p1 AS Text;
91105 DECLARE $p2 AS Uint64;
92106 DECLARE $p3 AS Interval;
93- SELECT $p1, $p2, $p3;
107+ DECLARE $p4 AS Text;
108+ SELECT $p1, $p2, $p3, $p4;
94109 ` ,
95110 query .WithParameters (
96111 ydb .ParamsBuilder ().
97112 Param ("$p1" ).Text ("test" ).
98113 Param ("$p2" ).Uint64 (100500000000 ).
99114 Param ("$p3" ).Interval (time .Duration (100500000000 )).
115+ Param ("$p4" ).Text ("test2" ).
100116 Build (),
101117 ),
102118 query .WithSyntax (query .SyntaxYQL ),
@@ -112,7 +128,7 @@ func TestQueryRange(t *testing.T) {
112128 if err != nil {
113129 return err
114130 }
115- err = row .Scan (& p1 , & p2 , & p3 )
131+ err = row .Scan (& p1 , & p2 , & p3 , & p4 )
116132 if err != nil {
117133 return err
118134 }
@@ -126,6 +142,9 @@ func TestQueryRange(t *testing.T) {
126142 if p3 != time .Duration (100500000000 ) {
127143 return fmt .Errorf ("unexpected p3 value: %v" , p3 )
128144 }
145+ if p4 .field != "test2" {
146+ return fmt .Errorf ("unexpected p4 value: %v" , p4 )
147+ }
129148 }
130149 }
131150 return nil
0 commit comments