PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak znaleźć wszystkie funkcje zdefiniowane przez użytkownika (nie związane z rozszerzeniem)?

Jak skomentował @Craig, zależności są przechowywane w pg_catalog.pg_depend .

Zapytanie może wyglądać tak (Postgres 11 lub później):

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

Wyklucza to z wyniku wszystkie funkcje zależne od rozszerzenia. Podręcznik o typie zależności deptype = 'e' :

I p.prokind = 'f' ogranicza wynik do zwykłych funkcji. Podręcznik:

To nowość w Postgres 11. Postgres 10 lub starszy użyj zamiast tego:

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

Nie było zabiegów jeszcze.

Znajdź pg_get_function_identity_arguments() i pg_get_functiondef() w instrukcji tutaj . Powiązane:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Radzenie sobie z powolnymi zapytaniami w PostgreSQL

  2. Jak zaimportować moduły lub zainstalować rozszerzenia w PostgreSQL 9.1+?

  3. Aktywna aktualizacja wszystkich pól JSON

  4. Zapytanie SQL:pobierz uporządkowane wiersze z tabeli — II

  5. Poprawa szybkości zapytań:prosty SELECT w dużej tabeli postgres