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

Jak najít všechny uživatelem definované funkce (nesouvisející s rozšířením)?

Jak poznamenal @Craig, závislosti jsou uloženy v pg_catalog.pg_depend .

Dotaz může vypadat takto (Postgres 11 nebo později):

SELECT p.proname AS function_name
     , pg_get_function_identity_arguments(p.oid) AS parameter_list
     , pg_get_functiondef(p.oid) AS function_def  -- CREATE FUNCTION statement
FROM   pg_proc p
LEFT   JOIN pg_depend d ON d.objid = p.oid 
                       AND d.deptype = 'e'        -- would depend on extension
WHERE  p.pronamespace = 'public'::regnamespace    -- your schema(s) of interest
AND    d.objid IS NULL                            -- no such dependency
AND    p.prokind = 'f';                           -- only plain functions

Tím se z výsledku vyloučí všechny funkce závislé na rozšíření. Příručka o typu závislosti deptype = 'e' :

A p.prokind = 'f' omezuje výsledek na prosté funkce. Příručka:

To je novinka v Postgres 11. Pro Postgres 10 nebo starší místo toho použijte:

SELECT ...
...
AND    NOT proisagg     -- no aggregate functions
AND    NOT proiswindow  -- no window functions

Nebyly provedeny žádné postupy , ještě.

Najděte pg_get_function_identity_arguments() a pg_get_functiondef() v příručce zde . Související:




  1. MySQL:Jak hromadně SELECT řádky s více páry v klauzuli WHERE

  2. ERROR 1005 MySQL Workbench Dopředné inženýrství

  3. Načtěte obrázek do C# a poté jej vložte do tabulky MySQL

  4. 2 způsoby, jak odstranit duplicitní řádky v MariaDB (ignoruje primární klíč)