Los valores predeterminados se analizan en el momento de la creación (enlace anticipado). Lo que ve en psql, pgAdmin u otros clientes es una representación de texto pero, de hecho, el OID
de la función now()
al momento de crear la columna por defecto se almacena en el catálogo del 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
Cuando cambia el search_path
, que hace que Postgres muestre el nombre de la función calificada por el esquema, ya que ya no se resolvería correctamente con la search_path
actual .
El volcado y la restauración no están relacionados con su search_path
personalizado ajuste. Lo establecieron explícitamente. Entonces, lo que ve no está relacionado con el ciclo de volcado/restauración.
Anular funciones integradas
Colocando public
antes de pg_catalog
en la search_path
es un juego de azar . A los usuarios desfavorecidos (incluyéndote a ti) a menudo se les permite escribir allí y crear funciones que pueden anular inadvertidamente las funciones del sistema, con un resultado arbitrario (o malicioso).
Quiere un esquema dedicado con acceso restringido para anular las funciones integradas. Usa algo como esto en su lugar:
SET search_path = override, pg_catalog, public;
Detalles en este respuesta relacionada en dba.SE .