2
0

Restore array support to pgxtype.LoadDataType

This commit is contained in:
Jack Christensen
2022-01-11 20:49:20 -06:00
parent ae9be0b99e
commit f743007fb4
+12 -17
View File
@@ -34,25 +34,20 @@ func LoadDataType(ctx context.Context, conn Querier, ci *pgtype.ConnInfo, typeNa
switch typtype {
case "b": // array
panic("TODO - restore array support")
// elementOID, err := GetArrayElementOID(ctx, conn, oid)
// if err != nil {
// return pgtype.DataType{}, err
// }
elementOID, err := GetArrayElementOID(ctx, conn, oid)
if err != nil {
return pgtype.DataType{}, err
}
// var element pgtype.ValueTranscoder
// if dt, ok := ci.DataTypeForOID(elementOID); ok {
// if element, ok = dt.Value.(pgtype.ValueTranscoder); !ok {
// return pgtype.DataType{}, errors.New("array element OID not registered as ValueTranscoder")
// }
// }
var elementCodec pgtype.Codec
if dt, ok := ci.DataTypeForOID(elementOID); ok {
if dt.Codec == nil {
return pgtype.DataType{}, errors.New("array element OID not registered with Codec")
}
elementCodec = dt.Codec
}
// newElement := func() pgtype.ValueTranscoder {
// return pgtype.NewValue(element).(pgtype.ValueTranscoder)
// }
// at := pgtype.NewArrayType(typeName, elementOID, newElement)
// return pgtype.DataType{Value: at, Name: typeName, OID: oid}, nil
return pgtype.DataType{Name: typeName, OID: oid, Codec: &pgtype.ArrayCodec{ElementOID: elementOID, ElementCodec: elementCodec}}, nil
case "c": // composite
panic("TODO - restore composite support")
// fields, err := GetCompositeFields(ctx, conn, oid)