2
0

Handle driver.Valuers inside Map.Encode

This commit is contained in:
Jack Christensen
2022-03-05 21:27:17 -06:00
parent 0905d1f452
commit c4b08378f2
3 changed files with 18 additions and 35 deletions
+11
View File
@@ -1720,6 +1720,17 @@ func (m *Map) Encode(oid uint32, formatCode int16, value interface{}, buf []byte
plan := m.PlanEncode(oid, formatCode, value)
if plan == nil {
if dv, ok := value.(driver.Valuer); ok {
if dv == nil {
return nil, nil
}
v, err := dv.Value()
if err != nil {
return nil, err
}
return m.Encode(oid, formatCode, v, buf)
}
return nil, fmt.Errorf("unable to encode %#v into OID %d", value, oid)
}
return plan.Encode(value, buf)