Criando um “operador de igualdade” personalizado para o tipo PostgreSQL (ponto) para chamadas DISTINCT

Em uma das minhas tabelas, tenho uma coluna definida como o tipo PostgreSQLpoint. Eu uso isso para oearthdistance módulo - especificamente, o<@> operador de distância. (Sim, eu sei sobre o PostGIS, mas era muito mais complexo do que minhas necessidades, que simplesmente recebe uma tabela com pares de lat / long, ordena a tabela por distância, com espaço para erro de um lat / long fornecido.)

Contudo,point parece não ter igualdade implementada, então qualquerDISTINCT chamar na mesa comoSELECT DISTINCT * FROM mytable resulta no seguinte erro:

ERROR: could not identify an equality operator for type point

Embora seja geralmente desaconselhável corrigir os tipos internos, neste caso não me importo e tentei criar meus próprios= operador parapoint:

CREATE OR REPLACE FUNCTION compare_points_equality(point1 POINT, point2 POINT)
  RETURNS BOOLEAN AS $
  SELECT point1[0] = point2[0] AND point1[1] = point1[1];
$ LANGUAGE SQL IMMUTABLE;

CREATE OPERATOR = (
  LEFTARG = POINT,
  RIGHTARG = POINT,
  PROCEDURE = compare_points_equality,
  COMMUTATOR = =,
  NEGATOR = !=,
  HASHES,
  MERGES
);

Mas, mesmo depois de criar isso, recebo o mesmo erro. O que devo fazer para criar o "operador de igualdade", se não criar=?

questionAnswers(1)

yourAnswerToTheQuestion