Uwaga: ta odpowiedź jest przestarzała, ponieważ jest teraz częścią standardowego PostgreSQL, zobacz inną odpowiedź tbussmanna (którą powinieneś zagłosować).
Oryginalna odpowiedź:
Można to zrobić za pomocą następującej klasy operatora:
CREATE OPERATOR CLASS _uuid_ops DEFAULT
FOR TYPE _uuid USING gin AS
OPERATOR 1 &&(anyarray, anyarray),
OPERATOR 2 @>(anyarray, anyarray),
OPERATOR 3 <@(anyarray, anyarray),
OPERATOR 4 =(anyarray, anyarray),
FUNCTION 1 uuid_cmp(uuid, uuid),
FUNCTION 2 ginarrayextract(anyarray, internal, internal),
FUNCTION 3 ginqueryarrayextract(anyarray, internal, smallint, internal, internal, internal, internal),
FUNCTION 4 ginarrayconsistent(internal, smallint, anyarray, integer, internal, internal, internal, internal),
STORAGE uuid;
Kredyty dla tego za wskazanie mi właściwego kierunku.
Odpowiednia dokumentacja znajduje się w Łączenie rozszerzeń z indeksami , w szczególności opisano tam strategię operatora i numery funkcji dla WZ.