Les valeurs par défaut sont analysées au moment de la création (liaison anticipée !). Ce que vous voyez dans psql, pgAdmin ou d'autres clients est une représentation textuelle mais, en fait, l'OID
de la fonction now()
au moment de la création de la colonne, la valeur par défaut est stockée dans le catalogue système pg_attrdef
. Je cite :
adbin pg_node_tree The internal representation of the column default value
adsrc text A human-readable representation of the default value
Lorsque vous modifiez le search_path
, qui fait que Postgres affiche le nom de la fonction qualifiée par le schéma, car elle ne serait plus résolue correctement avec le search_path
actuel .
Le vidage et la restauration ne sont pas concernés par votre search_path
personnalisé paramètre. Ils l'ont défini explicitement. Ce que vous voyez n'est donc pas lié au cycle de vidage/restauration.
Remplacer les fonctions intégrées
Placer public
avant pg_catalog
dans le search_path
est un jeu de hasard . Les utilisateurs défavorisés (y compris vous-même) sont souvent autorisés à y écrire et à créer des fonctions qui peuvent par inadvertance annuler les fonctions du système - avec un résultat arbitraire (ou malveillant).
Vous souhaitez un schéma dédié avec accès restreint pour remplacer les fonctions intégrées. Utilisez quelque chose comme ceci à la place :
SET search_path = override, pg_catalog, public;
Détails dans ce réponse connexe sur dba.SE .