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

La función min (uuid) no existe en postgresql

Me gustaría dar crédito a la respuesta de @robin-salih, la he usado y la implementación de min para int, para construir el siguiente código:

CREATE OR REPLACE FUNCTION min(uuid, uuid)
RETURNS uuid AS $$
BEGIN
    IF $2 IS NULL OR $1 > $2 THEN
        RETURN $2;
    END IF;

    RETURN $1;
END;
$$ LANGUAGE plpgsql;


create aggregate min(uuid) (
  sfunc = min,
  stype = uuid,
  combinefunc = min,
  parallel = safe,
  sortop = operator (<)
);

Es casi lo mismo, pero aprovecha el índice B-tree, así que select min(id) from tbl funciona en unos pocos milis.

PD No soy un experto en pgsql, tal vez mi código esté mal de alguna manera, verifique dos veces antes de usarlo en producción, pero espero que use índices y ejecución paralela correctamente. Lo hice solo a partir de un código de muestra, sin profundizar en la teoría detrás de los agregados en PG.