sql >> Databáze >  >> RDS >> PostgreSQL

Jak vybrat minimální UUID s levým vnějším spojením?

Našel řešení, ukázalo se, že funkce porovnává UUID z tento příspěvek není správné. Zde je funkce, kterou jsem napsal, která je pravděpodobně méně výkonná a projde všemi případy, ve kterých selhala dříve:

    CREATE FUNCTION min_uuid(uuid, uuid)
    RETURNS uuid AS $$
    BEGIN
        -- if they're both null, return null
        IF $2 IS NULL AND $1 IS NULL THEN
            RETURN NULL ;
        END IF;

        -- if just 1 is null, return the other
        IF $2 IS NULL THEN
            RETURN $1;
        END IF ;
        IF $1 IS NULL THEN
            RETURN $2;
          END IF;

        -- neither are null, return the smaller one
        IF $1 > $2 THEN
            RETURN $2;
        END IF;

        RETURN $1;
    END;
    $$ LANGUAGE plpgsql;


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



  1. Funkce COSH() v Oracle

  2. Základní třída VBA a odvozený objekt-2

  3. Omezení změn schématu PostgreSQL uvnitř transakcí?

  4. 4 tipy pro spuštění diagnostiky serveru SQL