@@ -40,8 +40,8 @@ var typeDatabaseName = map[fieldType]string{
4040 fieldTypeMediumBLOB : "MEDIUMBLOB" ,
4141 fieldTypeLongBLOB : "LONGBLOB" ,
4242 fieldTypeBLOB : "BLOB" ,
43- fieldTypeVarString : "VARSTRING" , // correct?
44- fieldTypeString : "STRING" , // correct?
43+ fieldTypeVarString : "VARCHAR" ,
44+ fieldTypeString : "CHAR" ,
4545 fieldTypeGeometry : "GEOMETRY" ,
4646}
4747
@@ -76,7 +76,7 @@ type mysqlField struct {
7676 decimals byte
7777}
7878
79- func (mf * mysqlField ) scanType () reflect.Type {
79+ func (mf * mysqlField ) scanType (parseTime bool ) reflect.Type {
8080 switch mf .fieldType {
8181 case fieldTypeNULL :
8282 return scanTypeNil
@@ -134,21 +134,17 @@ func (mf *mysqlField) scanType() reflect.Type {
134134 fieldTypeMediumBLOB , fieldTypeLongBLOB , fieldTypeBLOB ,
135135 fieldTypeVarString , fieldTypeString , fieldTypeGeometry , fieldTypeJSON ,
136136 fieldTypeTime :
137- if mf .flags & flagNotNULL != 0 {
138- // alternatively we could return []byte or even RawBytes
139- return scanTypeString
140- }
141- return scanTypeNullString
137+ return scanTypeRawBytes
142138
143139 case fieldTypeDate , fieldTypeNewDate ,
144140 fieldTypeTimestamp , fieldTypeDateTime :
145-
146- // TODO: respect rows.mc.parseTime
147-
148- if mf . flags & flagNotNULL != 0 {
149- return scanTypeTime
141+ if parseTime {
142+ if mf . flags & flagNotNULL != 0 {
143+ return scanTypeTime
144+ }
145+ return scanTypeNullTime
150146 }
151- return scanTypeNullTime
147+ return scanTypeRawBytes
152148
153149 default :
154150 return scanTypeUnknown
0 commit comments