Nota: questa risposta è obsoleta poiché ora fa parte di un PostgreSQL standard, vedi l'altra risposta di tbussmann (che dovresti votare).
Risposta originale:
Questo può essere fatto usando la seguente classe di operatori:
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;
Crediti a questo per avermi indirizzato nella giusta direzione.
La documentazione pertinente si trova in Estensioni di interfaccia agli indici , in particolare sono descritti la strategia dell'operatore e i numeri di funzione per GIN.