@@ -111,6 +111,7 @@ var (
111
111
scanTypeUint16 = reflect .TypeOf (uint16 (0 ))
112
112
scanTypeUint32 = reflect .TypeOf (uint32 (0 ))
113
113
scanTypeUint64 = reflect .TypeOf (uint64 (0 ))
114
+ scanTypeString = reflect .TypeOf (string ("" ))
114
115
scanTypeRawBytes = reflect .TypeOf (sql.RawBytes {})
115
116
scanTypeUnknown = reflect .TypeOf (new (interface {}))
116
117
)
@@ -175,11 +176,18 @@ func (mf *mysqlField) scanType() reflect.Type {
175
176
}
176
177
return scanTypeNullFloat
177
178
178
- case fieldTypeDecimal , fieldTypeNewDecimal , fieldTypeVarChar ,
179
- fieldTypeBit , fieldTypeEnum , fieldTypeSet , fieldTypeTinyBLOB ,
180
- fieldTypeMediumBLOB , fieldTypeLongBLOB , fieldTypeBLOB ,
181
- fieldTypeVarString , fieldTypeString , fieldTypeGeometry , fieldTypeJSON ,
182
- fieldTypeTime :
179
+ case fieldTypeVarChar , fieldTypeString , fieldTypeVarString :
180
+ return scanTypeString
181
+
182
+ case fieldTypeTinyBLOB , fieldTypeMediumBLOB , fieldTypeLongBLOB , fieldTypeBLOB :
183
+ if mf .charSet == collations [defaultCollation ] {
184
+ return scanTypeString
185
+ }
186
+ fallthrough
187
+
188
+ case fieldTypeDecimal , fieldTypeNewDecimal , fieldTypeBit ,
189
+ fieldTypeEnum , fieldTypeSet ,
190
+ fieldTypeGeometry , fieldTypeJSON , fieldTypeTime :
183
191
return scanTypeRawBytes
184
192
185
193
case fieldTypeDate , fieldTypeNewDate ,
0 commit comments