Restore array support to pgxtype.LoadDataType
This commit is contained in:
+12
-17
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user