Os valores padrão são analisados no momento da criação (ligação antecipada!). O que você vê no psql, pgAdmin ou outros clientes é uma representação de texto, mas, na verdade, o
OID da função now() no momento da criação da coluna o padrão é armazenado no catálogo do sistema pg_attrdef
. Eu cito:adbin pg_node_tree The internal representation of the column default value
adsrc text A human-readable representation of the default value
Quando você altera o
search_path
, que faz com que o Postgres exiba o nome da função qualificada pelo esquema, pois ela não seria mais resolvida corretamente com o search_path atual . O despejo e a restauração não estão relacionados ao seu
search_path personalizado contexto. Eles definiram explicitamente. Portanto, o que você vê não está relacionado ao ciclo de despejo/restauração. Substituir funções integradas
Colocando
public antes de pg_catalog no search_path é um jogo de azar . Usuários desprivilegiados (incluindo você) geralmente têm permissão para escrever lá e criar funções que podem anular inadvertidamente funções do sistema - com resultados arbitrários (ou maliciosos). Você deseja um esquema dedicado com acesso restrito para substituir funções internas. Use algo assim em vez disso:
SET search_path = override, pg_catalog, public;
Detalhes neste resposta relacionada em dba.SE .