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 .