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

Jak sprawdzić, która funkcja używa typu?

Wszystkie zależności znajdziesz w katalogu systemowym pg_depend .

Zwraca wszystkie funkcje w zależności od typu . Tj. nie tylko te z typem w RETURNS klauzula, ale także te z typem jako parametrem funkcji:

SELECT objid::regproc                            AS function_name
     , pg_get_functiondef(objid)                 AS function_definition
     , pg_get_function_identity_arguments(objid) AS function_args
     , pg_get_function_result(objid)             AS function_returns
FROM   pg_depend
WHERE  refclassid = 'pg_type'::regclass
AND    refobjid   = 'my_type'::regtype    -- insert your type name here
AND    classid    = 'pg_proc'::regclass;  -- only find functions

Działa to również w przypadku funkcji tabeli:

...
RETURNS TABLE (foo my_type, bar int)

Korzystanie z funkcji informacji o katalogu systemowym .

Mogą istnieć inne zależności (nie do funkcji). Usuń ostatnie WHERE warunek z mojego zapytania do przetestowania (i dostosuj SELECT lista, oczywiście).

I nadal istnieje możliwość, że typ zostanie użyty jawnie (na przykład w rzutowaniu) w zapytaniach w treści funkcji lub w dynamicznym SQL. Takie przypadki użycia można zidentyfikować tylko przez przeanalizowanie tekstu treści funkcji. W systemie nie ma zarejestrowanych wyraźnych zależności.

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. Zapytanie o pasujące tagi ciągu

  2. Hibernacja i wielodostępna baza danych przy użyciu schematów w PostgreSQL

  3. PostgreSQL porównuje dwa obiekty jsonb

  4. Twórz wiele instancji Postgres na tym samym komputerze

  5. Błąd podczas próby uruchomienia postgis Utwórz rozszerzenie