Controllo delle dipendenze prima di rilasciare gli UDX

Le dipendenze dalle UDX sono tracciate. Cioè, se una tabella, una vista o un altro UDX fa riferimento a un UDX che si vuole eliminare, non è possibile eliminarlo finché la dipendenza non viene rimossa.

Il controllo delle dipendenze evita qualsiasi problema con le interrogazioni future. È possibile visualizzare la dipendenza utilizzando la vista _v_depend. Segue un esempio, ma le informazioni sull'oggetto di riferimento e altri dettagli sono stati omessi dall'output di esempio per brevità:
SELECT * FROM _v_depend;
REFERENCING                  | REFERENCED                   | ...| SCHEMA | SCHEMAID
-----------------------------+------------------------------+----+--------+--------
table PROD..CUSTOMERS col(1) | function FILEUPDATE(INTEGER) |    | TEST1  | 581383
view TOTAL_VW                | aggregate MYSUM(INTEGER)     |    | TEST1  | 581383
function MYFUNC(INTEGER)     | library MYMATHLIB            |    | MATH2  | 581356
(3 rows)
Ad esempio, se si tenta di eliminare una UDF denominata 'fileupdate utilizzata in una tabella denominata 'CUSTOMERS, viene restituito un errore simile al seguente:
DEV(USER1)=> DROP FUNCTION fileupdate(int4);
ERROR:  Can't delete function FILEUPDATE - table CUSTOMERS (col 1) 
depends on it

L'errore riporta la tabella e la colonna specifica che si riferisce alla funzione che si desidera eliminare. Per gli oggetti in database e schemi diversi, il messaggio di errore fornisce un nome completamente qualificato per identificare l'oggetto.

Allo stesso modo, se si tenta di eliminare un UDX utilizzato in una vista, il comando restituisce un errore. Ad esempio, se si tenta di eliminare un'UDA denominata mysum e utilizzata in una vista denominata " TOTAL_VW, viene restituito un errore simile al seguente:
DEV(MYUSER)=> DROP AGGREGATE mysumint4);
ERRORE:  Impossibile eliminare l'aggregato MYSUM - la vista TOTAL_VW dipende da esso

Per risolvere questi messaggi di errore e abbandonare l'UDX, è necessario modificare il valore predefinito di ogni riga della tabella che fa riferimento alle UDF, modificando la clausola del valore predefinito con i comandi ALTER [ COLUMN ] column { SET DEFAULT value | DROP DEFAULT }. Per le viste, è necessario utilizzare il comando CREATE OR REPLACE VIEW per rimuovere l'UDX dalla definizione della vista.

Se si tenta di rilasciare una libreria condivisa definita dall'utente che è una dipendenza di un UDX esistente, è necessario risolvere tali dipendenze prima di poter rilasciare la libreria. Ad esempio:
DEV(MYUSER)=> DROP LIBRARY mymathlib;
ERROR:  Can't delete library mymathlib - function MYFUNC(integer) 
depends on it

Se si tenta di eliminare un database che contiene oggetti a cui fanno riferimento oggetti di altri database, il comando DROP DATABASE visualizza errori ed esce. Questo controllo e questo errore possono verificarsi anche se si tenta di abbandonare uno schema su un sistema che supporta più schemi. I messaggi di errore visualizzano fino a 5 dipendenze di oggetti, oltre al numero totale di dipendenze che devono essere risolte. È necessario risolvere tutti i problemi di dipendenza prima di poter abbandonare il database o lo schema.