@@ -19,6 +19,19 @@ import (
19
19
"github.com/ydb-platform/ydb-go-sdk/v3/query"
20
20
)
21
21
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
+
22
35
func TestQueryRange (t * testing.T ) {
23
36
ctx , cancel := context .WithCancel (xtest .Context (t ))
24
37
defer cancel ()
@@ -84,19 +97,22 @@ func TestQueryRange(t *testing.T) {
84
97
p1 string
85
98
p2 uint64
86
99
p3 time.Duration
100
+ p4 testStringScanner
87
101
)
88
102
err := db .Query ().Do (ctx , func (ctx context.Context , s query.Session ) error {
89
103
r , err := s .Query (ctx , `
90
104
DECLARE $p1 AS Text;
91
105
DECLARE $p2 AS Uint64;
92
106
DECLARE $p3 AS Interval;
93
- SELECT $p1, $p2, $p3;
107
+ DECLARE $p4 AS Text;
108
+ SELECT $p1, $p2, $p3, $p4;
94
109
` ,
95
110
query .WithParameters (
96
111
ydb .ParamsBuilder ().
97
112
Param ("$p1" ).Text ("test" ).
98
113
Param ("$p2" ).Uint64 (100500000000 ).
99
114
Param ("$p3" ).Interval (time .Duration (100500000000 )).
115
+ Param ("$p4" ).Text ("test2" ).
100
116
Build (),
101
117
),
102
118
query .WithSyntax (query .SyntaxYQL ),
@@ -112,7 +128,7 @@ func TestQueryRange(t *testing.T) {
112
128
if err != nil {
113
129
return err
114
130
}
115
- err = row .Scan (& p1 , & p2 , & p3 )
131
+ err = row .Scan (& p1 , & p2 , & p3 , & p4 )
116
132
if err != nil {
117
133
return err
118
134
}
@@ -126,6 +142,9 @@ func TestQueryRange(t *testing.T) {
126
142
if p3 != time .Duration (100500000000 ) {
127
143
return fmt .Errorf ("unexpected p3 value: %v" , p3 )
128
144
}
145
+ if p4 .field != "test2" {
146
+ return fmt .Errorf ("unexpected p4 value: %v" , p4 )
147
+ }
129
148
}
130
149
}
131
150
return nil
0 commit comments