sql >> Base de Datos >  >> RDS >> PostgreSQL

Índice GIN de PostgreSQL en una matriz de uuid

Nota: esta respuesta está obsoleta ya que ahora es parte de un PostgreSQL estándar, vea la otra respuesta de tbussmann (que debería votar).

Respuesta original:

Esto se puede hacer usando la siguiente clase de operador:

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;

Créditos a esto por indicarme la dirección correcta.

La documentación relevante se encuentra en Extensiones de interfaz para índices , en particular, la estrategia del operador y los números de función para GIN se describen allí.