PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Функцията min(uuid) не съществува в postgresql

Бих искал да призная отговора на @robin-salih, използвах го и внедряването на min за int, за да създам следния код:

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 (<)
);

Почти същото, но се възползва от предимствата на индекса на B-дърво, така че select min(id) from tbl работи за няколко милилита.

P.S. Не съм експерт по pgsql, може би кодът ми някак си е грешен, проверете отново преди употреба в производството, но се надявам, че използва индекси и паралелно изпълнение правилно. Направих го само от примерен код, без да се задълбочавам в теорията зад агрегатите в PG.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРУПИРАНЕ ПО последователни дати, разделени с пропуски

  2. Python Postgres psycopg2 ThreadedConnectionPool е изчерпан

  3. postgresql неправилно формиран литерал на масив в create aggregate initcond

  4. Postgres връзката е отказана от Openshift Tomcat 7 касета

  5. UUID или SEQUENCE за първичен ключ?