go-sql-driver / go-sql-driver/mysql
Scanner should return one of int64,float64,bool,[]byte,string,time.Time,nil , but I got uint64
- Dominant language
- Go
- Stars
- 15.3k
- Forks
- 2.3k
- Avg merge
- 2h 23m
- Merged PRs (30d)
- 10
Description
It maybe a bug of database/sql , if it is ,please tell me.
### Issue description
https://pkg.go.dev/database/sql#Scanner says Scanner should return one of int64,float64,bool,[]byte,string,time.Time,nil , but I got uint64
### Example code
the sql:
```
select * from INFORMATION_SCHEMA.TABLES
```
some of my scaner_t implement.
```go
type scaner_t struct{
src any
}
func (s *scaner_t) Scan(src any) error{
s.src = src
return nil
}
func (s *scaner_t) AsString() (outS string,err error){
switch obj:=s.src.(type) {
case int64:
return strconv.FormatInt(obj,10),nil
case float64:
return strconv.FormatFloat(obj,'f',-1,64),nil
case bool:
return strconv.FormatBool(obj),nil
case []byte:
return string(obj),nil
case string:
return obj,nil
case time.Time:
b,err:=obj.MarshalText()
if err!=nil{
return "",err
}
return string(b),nil
case nil:
return "",nil
default:
return "",errors.New("unknow type "+fmt.Sprintf("%T",s.src))
}
}
```
### Error log
```
unknow type uint64
```
### Configuration
*Driver version (or git SHA):*
github.com/go-sql-driver/mysql v1.8.0
*Go version:* run `go version` in your console
go version go1.19.2 darwin/amd64
*Server version:* E.g. MySQL 5.6, MariaDB 10.0.20
```
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.44 |
+-----------+
```
*Server OS:* E.g. Debian 8.1 (Jessie), Windows 10
mac os 14.2.1
Contributor guide
Assessment
This issue has not been assessed yet.