I valori predefiniti vengono analizzati al momento della creazione (associazione anticipata!). Quello che vedi in psql, pgAdmin o altri client è una rappresentazione testuale ma, in effetti, l'OID
della funzione now()
al momento della creazione la colonna default è memorizzata nel catalogo di sistema pg_attrdef
. Cito:
adbin pg_node_tree The internal representation of the column default value
adsrc text A human-readable representation of the default value
Quando modifichi lo search_path
, ciò fa sì che Postgres visualizzi il nome della funzione qualificata allo schema, poiché non verrebbe più risolta correttamente con l'attuale search_path
.
Il dump e il ripristino non riguardano il tuo search_path
personalizzato ambientazione. Lo hanno impostato in modo esplicito. Quindi quello che vedi non è correlato al ciclo di dump/ripristino.
Sostituisci le funzioni integrate
Inserimento di public
prima di pg_catalog
nel search_path
è un gioco d'azzardo . Gli utenti svantaggiati (incluso te stesso) sono spesso autorizzati a scrivere lì e creare funzioni che potrebbero inavvertitamente prevalere sulle funzioni di sistema, con risultati arbitrari (o dannosi).
Vuoi uno schema dedicato con accesso limitato per ignorare le funzioni integrate. Usa invece qualcosa del genere:
SET search_path = override, pg_catalog, public;
Dettagli in questo risposta correlata su dba.SE .