19.11. Padrões de conexão do cliente #

19.11.1. Comportamento da instrução
19.11.2. Localidade e formatação
19.11.3. Pré-carga de biblioteca compartilhada
19.11.4. Outros padrões

19.11.1. Comportamento da instrução #

client_min_messages (enum) #

Controla quais níveis de mensagem são enviados ao cliente. Os valores válidos são DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING e ERROR. Cada nível inclui todos os níveis que o seguem. Quanto mais alto for o nível, menos mensagens são enviadas. O padrão é NOTICE. Note-se que LOG tem uma classificação diferente aqui do que em log_min_messages.

As mensagens no nível INFO são sempre enviadas ao cliente.

search_path (string) #

Esta variável especifica a ordem pela qual os esquemas são procurados quando um objeto (tabela, tipo de dados, função, etc.) é referenciado por um nome simples sem nenhum esquema especificado. Quando existem objetos com nomes idênticos em esquemas diferentes, é utilizado aquele encontrado primeiro no caminho de procura. Um objeto que não está em nenhum dos esquemas no caminho de procura só pode ser referenciado especificando o esquema que o contém com o nome qualificado (com ponto).

O valor para search_path deve ser uma lista de nomes de esquemas separados por vírgula. Qualquer nome que não seja um esquema existente, ou seja, um esquema para o qual o usuário não tenha a permissão USAGE, será ignorado silenciosamente.

Se um dos itens da lista for o nome especial $user, então o esquema com o nome retornado por CURRENT_USER será substituído, se este esquema existir, e o usuário tiver a permissão USAGE para este esquema. (Caso contrário, $user será ignorado.)

O esquema do catálogo do sistema, pg_catalog, é sempre procurado, seja mencionado no caminho ou não. Se for mencionado no caminho, será procurado na ordem especificada. Se pg_catalog não estiver no caminho, então será procurado antes de procurar em qualquer um dos itens do caminho.

Da mesma forma, o esquema de tabela temporária da sessão corrente, pg_temp_nnn, é sempre procurado se existir. Pode ser listado explicitamente no caminho usando o alias pg_temp. Se não estiver listado no caminho, então será procurado primeiro (mesmo antes de pg_catalog). Entretanto, o esquema temporário é procurado apenas para relações (tabela, visão, sequência, etc.), e nomes de tipos de dados. Nunca é procurado para nomes de funções ou operadores.

Quando são criados objetos sem especificar um esquema de destino específico, estes são colocados no primeiro esquema válido incluído em search_path. Será relatado um erro se o caminho de procura estiver vazio.

O padrão para este parâmetro é "$user", public. Esta configuração oferece suporte ao uso compartilhado do banco de dados (onde nenhum usuário possui esquemas privados, e todos compartilham o uso de public), esquemas privados por usuário, e combinações desses. Podem ser obtidos outros efeitos alterando a configuração do caminho de procura padrão, globalmente ou por usuário.

Para obter mais informações sobre o tratamento de esquema, veja Esquemas. Em particular, a configuração padrão é adequada apenas quando o banco de dados tem um único usuário, ou alguns usuários que confiam uns nos outros.

O valor corrente do caminho de procura pode ser examinado através da função SQL current_schemas (veja Funções e operadores de informação do sistema). Não é o mesmo que examinar o valor de search_path, já que a função current_schemas mostra como os itens que aparecem em search_path foram resolvidos.

row_security (boolean) #

Esta variável controla se deve ser gerado um erro, em vez de aplicar a política de segurança de linha. Quando definido como on, as políticas são aplicadas normalmente. Quando definido como off as consultas falham, quando de outra forma aplicaria pelo menos uma política. O padrão é on. Deve-se mudar para off onde a visibilidade limitada da linha pode causar resultados incorretos; por exemplo, o utilitário pg_dump faz esta alteração por padrão. Esta variável não tem efeito em funções de banco de dados (roles) que ignoram a política de segurança de cada linha, ou seja, superusuários e funções de banco de dados com o atributo BYPASSRLS.

Para obter mais informações sobre políticas de segurança de linha, veja CREATE POLICY.

default_table_access_method (string) #

Este parâmetro especifica o método de acesso padrão à tabela, a ser usado ao criar tabelas ou visões materializadas, se o comando CREATE não especificar explicitamente o método de acesso, ou quando é utilizado SELECT ... INTO, que não permite especificar o método de acesso à tabela. O padrão é heap.

default_tablespace (string) #

Esta variável especifica o espaço de tabelas padrão, no qual criar objetos (tabelas e índices), quando o comando CREATE não especifica explicitamente o espaço de tabelas.

O valor é o nome de um espaço de tabelas, ou uma cadeia de caracteres vazia para especificar o uso do espaço de tabelas padrão do banco de dados corrente. Se o valor não corresponder a nenhum nome de espaço de tabelas existente, o PostgreSQL irá usar automaticamente o espaço de tabelas padrão do banco de dados corrente. Se for especificado um espaço de tabelas não-padrão, o usuário deverá ter o privilégio CREATE para este espaço de tabelas, ou as tentativas de criação vão falhar.

Esta variável não é usada para tabelas temporárias; para estas, é consultado temp_tablespaces.

Esta variável também não é usada ao criar bancos de dados. Por padrão, o novo banco de dados herda sua configuração de espaço de tabelas do banco de dados modelo do qual foi copiado.

Se este parâmetro estiver definido com um valor diferente da cadeia de caracteres vazia quando for criada uma tabela particionada, o espaço de tabelas da tabela particionada será definido com este valor, que será usado como espaço de tabelas padrão para as partições criadas no futuro, mesmo que default_tablespace tenha mudado desde então.

Veja Espaços de tabelas para obter mais informações sobre espaços de tabela.

default_toast_compression (enum) #

Esta variável define o método de compressão TOAST padrão para os valores das colunas comprimíveis. (Pode ser alterado por coluna separadamente, definindo a opção de coluna COMPRESSION nos comandos CREATE TABLE ou ALTER TABLE.) Os métodos de compressão com suporte são pglz, e (se o PostgreSQL foi construído com a opção --with-lz4) lz4. O padrão é pglz.

temp_tablespaces (string) #

Esta variável especifica os espaços de tabelas nos quais serão criados objetos temporários (tabelas temporárias e índices em tabelas temporárias), quando o comando CREATE não especifica explicitamente o espaço de tabelas. Os arquivos temporários para fins como, classificação de grandes conjuntos de dados, também são criados nesses espaços de tabelas.

O valor é uma lista de nomes de espaços de tabelas. Quando há mais de um nome na lista, o PostgreSQL escolhe um membro aleatório da lista cada vez que um objeto temporário deve ser criado; exceto que, em uma transação, os objetos temporários criados são sucessivamente colocados em espaços de tabelas sucessivos da lista. Se o elemento selecionado da lista for uma cadeia de caracteres vazia, o PostgreSQL irá usar automaticamente o espaço de tabelas padrão do banco de dados corrente.

Quando temp_tablespaces é definido interativamente, especificar um espaço de tabelas inexistente é um erro, assim como especificar um espaço de tabelas para o qual o usuário não possui o privilégio CREATE. Entretanto, ao usar um valor definido anteriormente, os espaços de tabelas inexistentes são ignorados, assim como os espaços de tabelas para os quais o usuário não possui o privilégio CREATE. Em particular, esta regra se aplica ao usar um valor definido no arquivo postgresql.conf.

O padrão é uma cadeia de caracteres vazia, que resulta na criação de todos os objetos temporários no espaço de tabelas padrão do banco de dados corrente.

Veja também default_tablespace.

check_function_bodies (boolean) #

Este parâmetro normalmente está ativo. Quando definido como off, desativa a validação da cadeia de caracteres do corpo da rotina durante os comandos CREATE FUNCTION e CREATE PROCEDURE. Desativar a validação evita efeitos colaterais do processo de validação, em particular evita falsos positivos devido a problemas como referências futuras. Deve-se definir este parâmetro como off antes de carregar funções em nome de outros usuários; o utilitário pg_dump faz isto automaticamente.

default_transaction_isolation (enum) #

Cada transação SQL possui um nível de isolamento, que pode ser tanto READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ ou SERIALIZABLE. Este parâmetro controla o nível de isolamento padrão de cada nova transação. O padrão é READ COMMITTED.

Veja Controle de concorrência e SET TRANSACTION para obter mais informações.

default_transaction_read_only (boolean) #

Uma transação SQL de leitura-apenas não pode alterar tabelas não temporárias. Este parâmetro controla o status de leitura-apenas padrão de cada nova transação. O padrão é off (leitura/escrita).

Veja SET TRANSACTION para obter mais informações.

default_transaction_deferrable (boolean) #

Ao executar no nível de isolamento SERIALIZABLE, uma transação SQL de leitura-apenas postergável pode ser atrasada antes de poder prosseguir. Entretanto, uma vez iniciada a execução, não irá incidir nenhuma sobrecarga necessária para garantir a serialização; portanto, o código de serialização não terá motivos para forçá-la a interromper devido a atualizações simultâneas, tornando esta opção adequada para transações de leitura-apenas de longa duração.

Este parâmetro controla o status de postergável padrão de cada nova transação. No momento, não tem efeito sobre transações de leitura e escrita, ou naquelas que operam em níveis de isolamento inferiores a SERIALIZABLE. O padrão é off.

Veja SET TRANSACTION para obter mais informações.

transaction_isolation (enum) #

Este parâmetro reflete o nível de isolamento da transação corrente. É definido com o valor corrente de default_transaction_isolation no início de cada transação. Qualquer tentativa subsequente de alterá-lo equivale a um comando SET TRANSACTION.

transaction_read_only (boolean) #

Este parâmetro reflete o status de leitura-apenas da transação corrente. No início de cada transação, é definido com o valor corrente de default_transaction_read_only. Qualquer tentativa subsequente de alterá-lo equivale a um comando SET TRANSACTION.

transaction_deferrable (boolean) #

Este parâmetro reflete o status de postergável da transação corrente. No início de cada transação, é definido com o valor corrente de default_transaction_deferrable. Qualquer tentativa subsequente de alterá-lo equivale ao comando SET TRANSACTION.

session_replication_role (enum) #

Controla a execução de gatilhos e regras relacionados à replicação para a sessão corrente. Definir esta variável requer privilégios de superusuário e resulta no descarte de quaisquer planos de consulta armazenados em cache anteriormente. Os valores possíveis são origin (o padrão), replica e local.

O uso pretendido dessa configuração é que os sistemas de replicação lógica a configurem como replica quando estiverem aplicando alterações replicadas. O efeito dessa configuração será que os gatilhos e regras (que não foram alterados em sua configuração padrão) não serão disparados na réplica. Veja as cláusulas ENABLE TRIGGER e ENABLE RULE do comando ALTER TABLE para obter mais informações.

O PostgreSQL trata as configurações origin e local da mesma forma internamente. Os sistemas de replicação de terceiros podem usar estes dois valores para fins internos como, por exemplo, usando local para designar uma sessão cujas alterações não devem ser replicadas.

Como as chaves estrangeiras são implementadas como gatilhos, definir este parâmetro como replica também desativa todas as verificações de chaves estrangeiras, o que pode deixar os dados em um estado inconsistente se usado indevidamente.

statement_timeout (integer) #

Interrompe qualquer instrução que demore mais do que o tempo especificado. Se log_min_error_statement estiver definido como ERROR ou inferior, a instrução que esgotou o tempo também será registrada. Se o valor for especificado sem unidades, será considerado milissegundos. O valor zero (o padrão) desativa o tempo limite.

O tempo limite é medido a partir do momento em que o comando chega ao servidor até ser concluído pelo servidor. Se estiverem presentes várias instruções SQL em uma única mensagem de consulta simples, o tempo limite será aplicado a cada instrução separadamente. (As versões do PostgreSQL anteriores a 13 tratavam geralmente o tempo limite como aplicado a toda cadeia de caracteres da consulta.) No protocolo de consulta estendido, o tempo limite começa a ser contado quando qualquer mensagem relacionada à consulta (Analisar, Vincular, Executar, Descrever) chega, sendo cancelado pela conclusão de uma mensagem Executar ou Sincronizar.

Definir statement_timeout no arquivo postgresql.conf não é recomendado, porque afeta todas as sessões.

transaction_timeout (integer) #

Termina qualquer sessão que ultrapasse em uma transação o período de tempo especificado. O limite aplica-se tanto a transações explícitas (iniciadas com BEGIN) quanto a uma transação iniciada implicitamente que corresponda a um único comando. Se este valor for especificado sem unidades, será considerado sendo milissegundos. Um valor zero (o padrão) desativa o tempo limite.

Se transaction_timeout for menor ou igual a idle_in_transaction_session_timeout ou statement_timeout, então será ignorado o tempo limite maior.

Definir transaction_timeout no arquivo postgresql.conf não é recomendado, porque isto afetaria todas as sessões.

Nota

As transações preparadas não estão sujeitas a este tempo limite.

lock_timeout (integer) #

Interrompe qualquer instrução que espere mais do que o tempo especificado ao tentar adquirir um bloqueio em uma tabela, índice, linha, ou outro objeto de banco de dados. O limite de tempo é aplicado separadamente a cada tentativa de aquisição de bloqueio. O limite é aplicado tanto a solicitações de bloqueio explícitas (tais como LOCK TABLE, ou SELECT FOR UPDATE sem NOWAIT.) quanto para bloqueios adquiridos implicitamente. Se o valor for especificado sem unidades, será considerado milissegundos. O valor zero (o padrão) desativa o tempo limite.

Ao contrário de statement_timeout, este tempo limite só pode ocorrer durante a espera por bloqueios. Note-se que se statement_timeout for diferente de zero, é inútil definir lock_timeout com o mesmo valor ou um valor maior, já que o tempo limite da instrução sempre seria acionado primeiro. Se log_min_error_statement estiver definido como ERROR ou inferior, a instrução que atingiu o tempo limite será registrada.

Definir lock_timeout no arquivo postgresql.conf não é recomendado, porque afeta todas as sessões.

idle_in_transaction_session_timeout (integer) #

Termina qualquer sessão que esteja ociosa (ou seja, aguardando uma consulta do cliente) em uma transação aberta por mais tempo que o especificado. Se o valor for especificado sem unidades, será considerado milissegundos. O valor zero (o padrão) desativa o tempo limite.

Esta opção pode ser usada para garantir que sessões ociosas não mantenham bloqueios por um intervalo de tempo excessivo. Mesmo quando não é mantido nenhum bloqueio significativo, uma transação aberta impede a eliminação de tuplas mortas recentemente, que podem estar visíveis apenas para esta transação; portanto, permanecer ocioso por muito tempo pode contribuir para o inchaço da tabela. Veja Limpeza de rotina para obter mais informações.

idle_session_timeout (integer) #

Termina qualquer sessão que esteja ociosa (ou seja, aguardando uma consulta do cliente), mas não com uma transação aberta, por mais tempo que o especificado. Se o valor for especificado sem unidades, será considerado milissegundos. O valor zero (o padrão) desativa o tempo limite.

Ao contrário do caso de uma transação aberta, uma sessão ociosa sem transação não impõe grandes custos ao servidor, portanto há menos necessidade de ativar este tempo limite do que idle_in_transaction_session_timeout.

Deve-se ter cuidado ao impor este tempo limite em conexões feitas por meio de software de pooling de conexões, ou outro middleware, porque esta camada pode não reagir bem ao fechamento inesperado da conexão. Pode ser útil ativar este tempo limite apenas para sessões interativas, talvez o aplicando apenas a determinados usuários.

bytea_output (enum) #

Define o formato de saída para valores do tipo de dados bytea. Os valores válidos são hex (o padrão), e escape (o formato tradicional do PostgreSQL). Veja Tipo de dados binário para obter mais informações. O tipo de dados bytea sempre aceita os dois formatos na entrada, independentemente dessa configuração.

xmlbinary (enum) #

Define como os valores binários são codificados em XML. Se aplica, por exemplo, quando valores do tipo de dados bytea são convertidos para XML pelas funções xmlelement e xmlforest. Os valores possíveis são base64 e hex, que são ambos definidos no XML Schema. O padrão é base64. Veja Funções para XML para obter mais informações sobre funções relacionadas a XML.

A escolha real aqui é principalmente uma questão de gosto, limitada apenas por possíveis restrições nas aplicações cliente. Os dois métodos dão suporte a todos os valores possíveis, embora a codificação hexadecimal seja um pouco maior que a codificação base64.

xmloption (enum) #

Define se DOCUMENT ou CONTENT está implícito ao converter entre XML e valores de cadeia de caracteres. Veja Tipo de dados XML para obter mais informações. Os valores válidos são DOCUMENT e CONTENT. O padrão é CONTENT.

Segundo o padrão SQL, o comando para definir esta opção é

SET XML OPTION { DOCUMENT | CONTENT };

Esta sintaxe também está disponível no PostgreSQL.

gin_pending_list_limit (integer) #

Define o tamanho máximo da lista pendente de um índice GIN, usado quando fastupdate está ativo. Se a lista crescer além desse tamanho máximo, ela será limpa movendo em massa as entradas da lista para a estrutura de dados GIN principal do índice. Se o valor for especificado sem unidades, será considerado quilobytes. O padrão é quatro megabytes (4MB). Esta configuração pode ser sobreposta em índices GIN separadamente, alterando os parâmetros de armazenamento do índice. Veja Técnica de atualização rápida do GIN e Dicas e truques sobre o GIN para obter mais informações.

createrole_self_grant (string) #

Se um usuário com o privilégio CREATEROLE, mas sem o privilégio SUPERUSER, criar uma função de banco de dados (role), e se este valor não estiver vazio, a função de banco de dados recém-criada será concedida ao usuário que a criou com as opções especificadas. O valor deve ser set, inherit, ou uma lista desses valores separada por vírgulas. O padrão é uma cadeia de caracteres vazia, o que desativa a funcionalidade.

A finalidade desta opção é permitir que um usuário com o privilégio CREATEROLE — que não seja um superusuário — herde automaticamente, ou adquira automaticamente a capacidade de executar SET ROLE para, quaisquer usuários criados. Como um usuário com o privilégio CREATEROLE sempre recebe implicitamente ADMIN OPTION nas funções de banco de dados criadas, este usuário poderia sempre executar uma instrução GRANT que teria o mesmo efeito que esta configuração. Entretanto, pode ser conveniente, por motivos de facilidade, que a concessão ocorra automaticamente. Um superusuário herda automaticamente os privilégios de todas as funções de banco de dados e pode sempre definir a função de banco de dados com o comando SET ROLE, e esta configuração pode ser usada para produzir um comportamento semelhante para usuários com o privilégio CREATEROLE em relação aos usuários criados por eles.

event_triggers (boolean) #

Permite desativar temporariamente a execução de gatilhos de evento para diagnosticar e corrigir gatilhos de evento defeituosos. Todos os gatilhos de evento serão desativados ao definir esta opção como false. Definir esta opção como true permite que todos os gatilhos de evento sejam disparados; este é o padrão. Apenas superusuários e usuários com o privilégio SET apropriado podem alterar esta configuração.

restrict_nonsystem_relation_kind (string) #

Define os tipos de relação para as quais é proibido acessar relações que não sejam do sistema. O valor assume a forma de uma lista de tipos de relação separados por vírgulas. No momento, os tipos de relação com suporte são: view e foreign-table.

19.11.2. Localidade e formatação #

DateStyle (string) #

Define o formato de exibição para valores de data e hora, bem como as regras para interpretar valores de entrada de data ambíguos. Por razões históricas, esta variável contém dois componentes independentes: a especificação do formato de saída (ISO, Postgres, SQL, ou German), e a especificação de entrada/saída para ordenação de ano/mês/dia (DMY, MDY, ou YMD). Podem ser definidos separadamente ou em conjunto. As palavras-chave Euro e European são sinônimos de DMY; as palavras-chave US, NonEuro, e NonEuropean, são sinônimos de MDY. Veja Tipos de dados de data e hora para obter mais informações. O padrão nativo é ISO, MDY, mas o initdb irá inicializar o arquivo de configuração com a configuração correspondente ao comportamento da localidade lc_time escolhida.

IntervalStyle (enum) #

Define o formato de exibição para valores de intervalo. O valor sql_standard irá produzir uma saída correspondente aos literais de intervalo do padrão SQL. O valor postgres (o padrão) irá produzir uma saída correspondente às versões do PostgreSQL anteriores à 8.4, quando o parâmetro DateStyle for definido como ISO. O valor postgres_verbose irá produzir uma saída correspondente às versões do PostgreSQL anteriores à 8.4, quando o parâmetro DateStyle for definido como uma saída diferente de ISO. O valor iso_8601 irá produzir uma saída correspondente ao formato do intervalo de tempo com designadores de zona horária, definidos na seção 4.4.3.2 da norma ISO 8601.

O parâmetro IntervalStyle também afeta a interpretação de entradas de intervalo ambíguas. Veja Entrada de intervalo para obter mais informações.

TimeZone (string) #

Define a zona horária para exibição e interpretação de carimbos de data e hora. O padrão interno é GMT, mas é normalmente sobreposto no arquivo postgresql.conf; O utilitário initdb irá instalar uma configuração correspondente ao ambiente do sistema operacional. Veja Zonas horárias para obter mais informações.

timezone_abbreviations (string) #

Define a coleção de abreviaturas de zona horária adicionais aceitas pelo servidor para a entrada de dados de data e hora (além de quaisquer abreviaturas definidas pela configuração corrente de TimeZone). O padrão é 'Default', que é uma coleção que funciona na maior parte do mundo; há também 'Australia', 'India' e outras coleções que podem ser definidas para uma instalação específica. Veja Arquivos de configuração de data e hora para obter mais informações.

extra_float_digits (integer) #

Este parâmetro ajusta o número de dígitos usados para saída textual de valores de ponto flutuante, incluindo os tipos de dados float4, float8, e tipos de dados geométricos.

Se o valor for 1 (o padrão), ou superior, os valores de ponto flutuante serão gerados no formato mais curto e preciso; veja Tipos de dados de ponto flutuante. O número real de dígitos gerados depende apenas do valor que está sendo gerado, e não do valor desse parâmetro. Podem ser requeridos no máximo 17 dígitos para valores do tipo de dados float8, e 9 para float4. Este formato é rápido e preciso, preservando o valor de ponto flutuante binário original quando lido corretamente. Para manter compatibilidade histórica, são permitidos valores até 3.

Se o valor for zero ou negativo, a saída será arredondada para uma determinada precisão decimal. A precisão usada é o número padrão de dígitos do tipo de dados (FLT_DIG ou DBL_DIG, conforme o caso), reduzido segundo o valor desse parâmetro. (Por exemplo, especificar -1 faz com que os valores float4 sejam arredondados para 5 dígitos significativos, e os valores float8 sejam arredondados para 14 dígitos.) Este formato é mais lento e não preserva todos os bits do valor de ponto flutuante binário, mas pode ser mais legível por humanos.

Nota

O significado desse parâmetro e seu valor padrão foram alterados no PostgreSQL 12; veja Tipos de dados de ponto flutuante para obter mais informações.

client_encoding (string) #

Define a codificação (conjunto de caracteres) do lado cliente. O padrão é usar a codificação do banco de dados. Os conjuntos de caracteres com suporte pelo servidor PostgreSQL são descritos em Conjuntos de caracteres com suporte.

lc_messages (string) #

Define o idioma em que as mensagens são mostradas. Os valores aceitáveis dependem do sistema operacional; veja Suporte a localidade para obter mais informações. Se esta variável estiver definida como uma cadeia de caracteres vazia (o padrão), então o valor será herdado do ambiente de execução do servidor de maneira dependente do sistema operacional.

Em alguns sistemas operacionais, não existe a categoria localidade. Definir esta variável ainda irá funcionar, mas não terá efeito. Além disso, existe a possibilidade de não existirem mensagens traduzidas para o idioma desejado. Neste caso, continuarão sendo vistas mensagens em inglês.

Apenas superusuários e usuários com o privilégio SET apropriado podem alterar esta configuração.

lc_monetary (string) #

Define a localidade a ser usada para formatar valores monetários, por exemplo, com a família de funções to_char. Os valores aceitáveis dependem do sistema operacional; veja Suporte a localidade para obter mais informações. Se esta variável for definida como uma cadeia de caracteres vazia (o padrão), então o valor será herdado do ambiente de execução do servidor de maneira dependente do sistema operacional.

lc_numeric (string) #

Define a localidade a ser usada para formatar números, por exemplo, com a família de funções to_char. Os valores aceitáveis dependem do sistema operacional; veja Suporte a localidade para obter mais informações. Se esta variável for definida como uma cadeia de caracteres vazia (o padrão), então o valor será herdado do ambiente de execução do servidor de maneira dependente do sistema operacional.

lc_time (string) #

Define a localidade a ser usada para formatar datas e horas, por exemplo, com a família de funções to_char. Os valores aceitáveis dependem do sistema operacional; veja Suporte a localidade para obter mais informações. Se esta variável for definida como uma cadeia de caracteres vazia (o padrão), então o valor será herdado do ambiente de execução do servidor de maneira dependente do sistema operacional.

icu_validation_level (enum) #

Quando são encontrados problemas de validação de localidade ICU, controla qual nível de mensagem é usado para relatar o problema. Os valores válidos são DISABLED, DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR e LOG.

Se definido como DISABLED, não relata problemas de validação. Caso contrário, relata problemas no nível de mensagem especificado. O padrão é WARNING.

default_text_search_config (string) #

Seleciona a configuração de procura de texto usada pelas variantes das funções de procura de texto que não possuem um argumento explícito especificando a configuração. Veja Procura de texto completo para obter mais informações. O padrão integrado é pg_catalog.simple, mas o utilitário initdb irá inicializar o arquivo de configuração com uma configuração que corresponda ao local lc_ctype escolhido, se puder ser identificada uma configuração correspondente a esta localidade.

19.11.3. Pré-carga de biblioteca compartilhada #

Estão disponíveis várias configurações para pré-carregar bibliotecas compartilhadas no servidor, a fim de carregar funcionalidades adicionais ou obter benefícios de desempenho. Por exemplo, uma configuração de '$libdir/mylib' causa o pré-carregamento de mylib.so (ou, em algumas plataformas, mylib.sl) a partir do diretório de biblioteca padrão da instalação. As diferenças entre as configurações são o momento em que elas são aplicadas, e quais privilégios são necessários para alterá-las.

As bibliotecas de linguagem procedural do PostgreSQL podem ser pré-carregadas dessa forma, usando tipicamente a sintaxe '$libdir/plXXX', onde XXX pode ser pgsql, perl, tcl ou python.

Somente as bibliotecas compartilhadas especificamente destinadas ao uso com PostgreSQL podem ser carregadas dessa forma. Toda biblioteca com suporte pelo PostgreSQL possui um bloco mágico, verificado para garantir a compatibilidade. Por esta razão, bibliotecas não-PostgreSQL não podem ser carregadas dessa forma. Pode-se usar recursos do sistema operacional, como LD_PRELOAD, para esta finalidade.

Em geral, deve-se consultar a documentação específica do módulo para conhecer a forma recomendada de carregar este módulo.

local_preload_libraries (string) #

Esta variável especifica uma ou mais bibliotecas compartilhadas a serem pré-carregadas no início da conexão. Contém uma lista de nomes de bibliotecas separados por vírgula, onde cada nome é interpretado como um parâmetro para o comando LOAD. Os espaços em branco entre as entradas são ignorados; deve-se colocar o nome da biblioteca entre aspas, se for necessário incluir espaços em branco ou vírgulas no nome. O valor do parâmetro só tem efeito no início da conexão. As alterações subsequentes não têm efeito. Se não for encontrada a biblioteca especificada, a tentativa de conexão irá falhar.

Esta opção pode ser definida por qualquer usuário. Por este motivo, as bibliotecas que podem ser carregadas são restritas àquelas que aparecem no subdiretório plugins do diretório de biblioteca padrão da instalação. (É responsabilidade do administrador do banco de dados garantir que sejam instaladas apenas bibliotecas seguras neste diretório.) As entradas em local_preload_libraries podem especificar este diretório explicitamente, por exemplo, $libdir/plugins/mylib, ou apenas especificar o nome da biblioteca — mylib teria o mesmo efeito que $libdir/plugins/mylib.

O propósito desse recurso é permitir que usuários sem privilégios carreguem bibliotecas de depuração ou medição de desempenho em sessões específicas, sem exigir um comando LOAD explícito. Para esta finalidade, seria típico definir este parâmetro usando a variável de ambiente PGOPTIONS no cliente, ou usando ALTER ROLE SET.

Entretanto, a menos que o módulo seja projetado especificamente para ser usado dessa forma por não-superusuários, esta não é geralmente a configuração correta a ser usada. Veja session_preload_libraries em vez disso.

session_preload_libraries (string) #

Esta variável especifica uma ou mais bibliotecas compartilhadas a serem pré-carregadas no início da conexão. Contém uma lista de nomes de bibliotecas separados por vírgula, onde cada nome é interpretado como um parâmetro para o comando LOAD. Os espaços em branco entre as entradas são ignorados; deve-se colocar o nome da biblioteca entre aspas, se for necessário incluir espaços em branco ou vírgulas no nome. O valor do parâmetro só tem efeito no início da conexão. As alterações subsequentes não têm efeito. Se não for encontrada a biblioteca especificada, a tentativa de conexão irá falhar. Apenas superusuários e usuários com o privilégio SET apropriado podem alterar esta configuração.

O propósito dessa funcionalidade é permitir que sejam carregadas bibliotecas de depuração ou medição de desempenho em sessões específicas, sem que seja fornecido um comando LOAD explícito. Por exemplo, poderia ser ativado auto_explain para todas as sessões sob um determinado nome de usuário, definindo este parâmetro com ALTER ROLE SET. Além disso, este parâmetro pode ser alterado sem reiniciar o servidor (mas as alterações só terão efeito quando for iniciada uma nova sessão), portanto é mais fácil adicionar novos módulos dessa forma, mesmo que devam ser aplicados a todas as sessões.

Ao contrário de shared_preload_libraries, não há grande vantagem de desempenho em carregar a biblioteca no início da sessão e não quando for usada pela primeira vez. Há alguma vantagem, entretanto, quando é usado pool de conexões.

shared_preload_libraries (string) #

Esta variável especifica uma ou mais bibliotecas compartilhadas a serem pré-carregadas na ativação do servidor. Contém uma lista de nomes de bibliotecas separados por vírgula, onde cada nome é interpretado como um parâmetro para o comando LOAD. Os espaços em branco entre as entradas são ignorados; deve-se colocar o nome da biblioteca entre aspas, se for necessário incluir espaços em branco ou vírgulas no nome. Este parâmetro só pode ser definido na ativação do servidor. Se não for encontrada uma biblioteca especificada, o servidor não será carregado.

Algumas bibliotecas precisam realizar certas operações que só podem ocorrer na ativação do postmaster, como alocar memória compartilhada, reservar bloqueios leves, ou iniciar trabalhos em segundo plano. Estas bibliotecas devem ser carregadas na ativação do servidor através desse parâmetro. Veja a documentação de cada biblioteca para obter detalhes.

Outras bibliotecas também podem ser pré-carregadas. Ao pré-carregar uma biblioteca compartilhada, o tempo de carga da biblioteca é evitado quando a biblioteca é usada pela primeira vez. Entretanto, o tempo para carregar cada novo processo servidor pode aumentar ligeiramente, mesmo que este processo nunca utilize a biblioteca. Portanto, este parâmetro é recomendado apenas para bibliotecas utilizadas na maioria das sessões. Além disso, alterar este parâmetro requer a reativação do servidor, por isto esta não é a configuração correta para usar em tarefas de depuração de curto prazo, por exemplo. Deve-se usar session_preload_libraries para isto.

Nota

Nos hospedeiros Windows, pré-carregar uma biblioteca na inicialização do servidor não irá reduzir o tempo necessário para iniciar cada novo processo servidor; cada processo servidor irá recarregar todas as bibliotecas de pré-carga. Entretanto, shared_preload_libraries ainda é útil em hospedeiros Windows para bibliotecas que precisam executar operações na hora da ativação do postmaster.

jit_provider (string) #

Esta variável contém o nome da biblioteca do provedor de JIT a ser usada (veja Provedores de JIT conectáveis). O padrão é llvmjit. Este parâmetro só pode ser definido na ativação do servidor.

Se definido como uma biblioteca não existente, o JIT não estará disponível, mas nenhum erro será gerado. Isto permite que o suporte a JIT seja instalado em separado do pacote principal do PostgreSQL.

19.11.4. Outros padrões #

dynamic_library_path (string) #

Se um módulo carregável dinamicamente precisar ser aberto, e o nome do arquivo especificado no comando CREATE FUNCTION ou LOAD não tiver o componente de diretório (ou seja, o nome não contém uma barra), o sistema irá procurar neste caminho o arquivo requerido.

O valor para dynamic_library_path deve ser uma lista de caminhos absolutos de diretório separados por dois pontos (ou ponto e vírgula, no Windows). Se um elemento da lista começar com a cadeia de caracteres especial $libdir, será substituído o diretório compilado de biblioteca de pacotes do PostgreSQL por $libdir; é neste diretório que são instalados os módulos fornecidos pela distribuição padrão do PostgreSQL. (Deve-se usar pg_config --pkglibdir para descobrir o nome desse diretório.) Por exemplo:

dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'

ou, em um ambiente Windows:

dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'

O padrão para este parâmetro é '$libdir'. Se o valor for definido como uma cadeia de caracteres vazia, será desativada a procura automática de caminho.

Este parâmetro pode ser alterado em tempo de execução pelos superusuários, e pelos usuários com o privilégio SET apropriado, mas uma configuração feita dessa forma só irá persistir até o final da conexão do cliente, portanto este método deve ser reservado para fins de desenvolvimento. A forma recomendada para definir este parâmetro é no arquivo de configuração postgresql.conf.

extension_control_path (string) #

Caminho para procurar extensões, especificamente arquivos de controle de extensão (nome.control). O script de extensão restante e os arquivos de controle secundários são então carregados a partir do mesmo diretório onde o arquivo de controle primário foi encontrado. Veja Arquivos da extensão para obter mais informações.

O valor para extension_control_path deve ser uma lista de caminhos absolutos de diretório separados por dois-pontos (ou ponto e vírgula no Windows). Se a lista começar pela cadeia de caracteres especial $system, o diretório de extensões do PostgreSQL compilado internamente será substituído por $system; onde são instaladas as extensões fornecidas pela distribuição padrão do PostgreSQL. (Deve-se usar pg_config --sharedir para descobrir o nome deste diretório.) Por exemplo:

extension_control_path = '/usr/local/share/postgresql:/home/my_project/share:$system'

ou, em um ambiente Windows:

extension_control_path = 'C:\tools\postgresql;H:\my_project\share;$system'

Note-se que é esperado que os elementos dos caminhos especificados possuam um subdiretório extension, o qual conterá os arquivos .control e .sql; o sufixo extension é anexado automaticamente a cada elemento do caminho.

O padrão para este parâmetro é '$system'. Se o valor for definido como uma cadeia de caracteres vazia, também será assumido o padrão '$system'.

Se estiverem presentes extensões com nomes iguais em vários diretórios no caminho configurado, será utilizada apenas a instância encontrada primeiro no caminho.

Este parâmetro pode ser alterado em tempo de execução por superusuários e usuários com o privilégio SET apropriado, mas uma configuração feita dessa forma persistirá apenas até o fim da conexão do cliente; portanto, este método deve ser reservado para fins de desenvolvimento. A maneira recomendada de definir este parâmetro é no arquivo de configuração postgresql.conf.

Note-se que, se este parâmetro for definido para poder carregar extensões de locais não-padrão, provavelmente também será necessário definir dynamic_library_path para um local correspondente como, por exemplo,

extension_control_path = '/usr/local/share/postgresql:$system'
dynamic_library_path = '/usr/local/lib/postgresql:$libdir'

gin_fuzzy_search_limit (integer) #

Limite superior flexível do tamanho do conjunto retornado pelas varreduras de índice GIN. Veja Dicas e truques sobre o GIN para obter mais informações.