@@ -11,20 +11,23 @@ func ScanValues(src Row) ([]any, error) {
11
11
return nil , err
12
12
}
13
13
var (
14
- anys = make ([]sqldb.AnyValue , len (cols ))
15
- vals = make ([]any , len (cols ))
14
+ anys = make ([]sqldb.AnyValue , len (cols ))
15
+ result = make ([]any , len (cols ))
16
16
)
17
- for i := range vals {
18
- vals [i ] = & anys [i ]
17
+ // result elements hold pointer to sqldb.AnyValue for scanning
18
+ for i := range result {
19
+ result [i ] = & anys [i ]
19
20
}
20
- err = src .Scan (vals ... )
21
+ err = src .Scan (result ... )
21
22
if err != nil {
22
23
return nil , err
23
24
}
24
- for i := range vals {
25
- vals [i ] = anys [i ].Val
25
+ // don't return pointers to sqldb.AnyValue
26
+ // but what internal value has been scanned
27
+ for i := range result {
28
+ result [i ] = anys [i ].Val
26
29
}
27
- return vals , nil
30
+ return result , nil
28
31
}
29
32
30
33
// ScanStrings scans the values of a row as strings.
@@ -37,15 +40,15 @@ func ScanStrings(src Row) ([]string, error) {
37
40
return nil , err
38
41
}
39
42
var (
40
- strs = make ([]string , len (cols ))
41
- args = make ([]any , len (cols ))
43
+ result = make ([]string , len (cols ))
44
+ resultPtrs = make ([]any , len (cols ))
42
45
)
43
- for i := range args {
44
- args [i ] = (* sqldb .StringScannable )(& strs [i ])
46
+ for i := range resultPtrs {
47
+ resultPtrs [i ] = (* sqldb .StringScannable )(& result [i ])
45
48
}
46
- err = src .Scan (args ... )
49
+ err = src .Scan (resultPtrs ... )
47
50
if err != nil {
48
51
return nil , err
49
52
}
50
- return strs , nil
53
+ return result , nil
51
54
}
0 commit comments