@@ -10,9 +10,12 @@ import (
1010
1111func RegisterTypes (ctx context.Context , conn * pgx.Conn ) error {
1212 var vectorOid * uint32
13+ var vectorArrayOid * uint32
1314 var halfvecOid * uint32
15+ var halfvecArrayOid * uint32
1416 var sparsevecOid * uint32
15- err := conn .QueryRow (ctx , "SELECT to_regtype('vector')::oid, to_regtype('halfvec')::oid, to_regtype('sparsevec')::oid" ).Scan (& vectorOid , & halfvecOid , & sparsevecOid )
17+ var sparsevecArrayOid * uint32
18+ err := conn .QueryRow (ctx , "SELECT to_regtype('vector')::oid, to_regtype('_vector')::oid, to_regtype('halfvec')::oid, to_regtype('_halfvec')::oid, to_regtype('sparsevec')::oid, to_regtype('_sparsevec')::oid" ).Scan (& vectorOid , & vectorArrayOid , & halfvecOid , & halfvecArrayOid , & sparsevecOid , & sparsevecArrayOid )
1619 if err != nil {
1720 return err
1821 }
@@ -22,14 +25,20 @@ func RegisterTypes(ctx context.Context, conn *pgx.Conn) error {
2225 }
2326
2427 tm := conn .TypeMap ()
25- tm .RegisterType (& pgtype.Type {Name : "vector" , OID : * vectorOid , Codec : & VectorCodec {}})
28+ vectorType := pgtype.Type {Name : "vector" , OID : * vectorOid , Codec : & VectorCodec {}}
29+ tm .RegisterType (& vectorType )
30+ tm .RegisterType (& pgtype.Type {Name : "_vector" , OID : * vectorArrayOid , Codec : & pgtype.ArrayCodec {ElementType : & vectorType }})
2631
2732 if halfvecOid != nil {
28- tm .RegisterType (& pgtype.Type {Name : "halfvec" , OID : * halfvecOid , Codec : & HalfVectorCodec {}})
33+ halfvecType := pgtype.Type {Name : "halfvec" , OID : * halfvecOid , Codec : & HalfVectorCodec {}}
34+ tm .RegisterType (& halfvecType )
35+ tm .RegisterType (& pgtype.Type {Name : "_halfvec" , OID : * halfvecArrayOid , Codec : & pgtype.ArrayCodec {ElementType : & halfvecType }})
2936 }
3037
3138 if sparsevecOid != nil {
32- tm .RegisterType (& pgtype.Type {Name : "sparsevec" , OID : * sparsevecOid , Codec : & SparseVectorCodec {}})
39+ sparsevecType := pgtype.Type {Name : "sparsevec" , OID : * sparsevecOid , Codec : & SparseVectorCodec {}}
40+ tm .RegisterType (& sparsevecType )
41+ tm .RegisterType (& pgtype.Type {Name : "_sparsevec" , OID : * sparsevecArrayOid , Codec : & pgtype.ArrayCodec {ElementType : & sparsevecType }})
3342 }
3443
3544 return nil
0 commit comments