19.13. Compatibilidade de versão e plataforma #

19.13.1. Versões anteriores do PostgreSQL
19.13.2. Compatibilidade de plataforma e cliente

19.13.1. Versões anteriores do PostgreSQL #

array_nulls (boolean) #

Este parâmetro controla se o analisador de entrada de matriz reconhece NULL sem aspas como especificando um elemento de matriz nulo. Por padrão, está on, permitindo que sejam inseridos valores de matriz contendo valores nulos. Entretanto, as versões do PostgreSQL anteriores à 8.2 não oferecia suporte a valores nulos em matrizes e, portanto, tratavam NULL como especificando um elemento de matriz normal com o valor de cadeia de caracteres NULL. Para compatibilidade retroativa com aplicações que exigem o comportamento antigo, esta variável pode ser tornada off.

Note-se ser possível criar valores de matriz contendo valores nulos mesmo quando esta variável está off.

backslash_quote (enum) #

Este parâmetro controla se o apóstrofo pode ser representado por \' em um literal cadeia de caracteres. A maneira preferida, padrão SQL, de representar apóstrofos é duplicando-os (''), mas o PostgreSQL historicamente também sempre aceitou \'. Entretanto, o uso de \' cria riscos de segurança, porque, em algumas codificações de conjuntos de caracteres do cliente, existem caracteres multibyte nos quais o último byte é numericamente equivalente a ASCII \. Se o código do lado cliente não colocar escapes de forma correta, será possível um ataque de injeção de SQL. Este risco pode ser evitado fazendo com que o servidor rejeite consultas onde os apóstrofos parecem receber escape de contrabarra. Os valores permitidos de backslash_quote são on (permite \' sempre), off (rejeita sempre), e safe_encoding (permite somente se a codificação do cliente não permitir o caractere ASCII \ em um caractere multibyte). O padrão é safe_encoding.

Note que em um literal cadeia de caracteres em conformidade com o padrão SQL, \ significa apenas \ de qualquer maneira. Este parâmetro afeta apenas o tratamento de literais fora do padrão, incluindo sintaxe de cadeia de caracteres com escape (E'...').

escape_string_warning (boolean) #

Quando ativo, será emitido um aviso se aparecer uma contrabarra (\) em um literal cadeia de caracteres comum (sintaxe '...'), e standard_conforming_strings estiver off. O padrão é on.

As aplicações que desejam usar contrabarra como escape devem ser modificadas para usar a sintaxe de cadeia de caracteres com escape (E'...'), porque o comportamento padrão de cadeia de caracteres comuns agora é tratar a contrabarra como um caractere comum, em conformidade com o padrão SQL. Esta variável pode ser ativada para ajudar a localizar o código que precisa ser alterado.

lo_compat_privileges (boolean) #

Nas versões do PostgreSQL anteriores à 9.0, os objetos grandes não tinham privilégios de acesso, e podiam, portanto, serem sempre lidos e escritos por todos os usuários. Definir esta variável como on desativa as novas verificações de privilégios, para manter a compatibilidade com as versões anteriores. O padrão é off. Apenas superusuários e usuários com o privilégio SET apropriado podem alterar esta configuração.

Definir esta variável não desativa todas as verificações de segurança relacionadas a objetos grandes — apenas aquelas para as quais o comportamento padrão mudou no PostgreSQL 9.0.

quote_all_identifiers (boolean) #

Quando o banco de dados gera SQL, força a colocação de todos os identificadores entre aspas, mesmo que não sejam palavras-chave (no momento). Isto afeta a saída do comando EXPLAIN, bem como os resultados de funções como pg_get_viewdef. Veja também a opção --quote-all-identifiers de pg_dump e pg_dumpall.

standard_conforming_strings (boolean) #

Este parâmetro controla se literais cadeia de caracteres comuns ('...') tratam as contrabarras literalmente, conforme especificado no padrão SQL. A partir do PostgreSQL 9.1, o padrão se tornou on (as versões anteriores tinham como padrão off). As aplicações podem verificar este parâmetro para determinar como os literais cadeia de caracteres são processados. A presença desse parâmetro também pode ser tomada como indicação de que a sintaxe da cadeia de caracteres com escape (E'...') tem suporte. Deverá ser usada a sintaxe de cadeia de caracteres de escape (Constantes do tipo cadeia de caracteres com escapes no estilo-C), se a aplicação desejar que a contrabarra seja tratada como caractere de escape.

synchronize_seqscans (boolean) #

Este parâmetro permite que as varreduras sequenciais de tabelas grandes sejam sincronizadas entre si, de modo que varreduras simultâneas leiam o mesmo bloco quase ao mesmo tempo, e, portanto, compartilhem a carga de trabalho de E/S. Quando está ativo, uma varredura pode começar no meio da tabela e então contornar o final para cobrir todas as linhas, de modo a sincronizar com a atividade de varreduras já em andamento. Isto pode resultar em alterações imprevisíveis na ordem das linhas retornadas por consultas que não possuem a cláusula ORDER BY. Definir este parâmetro como off garante o comportamento anterior à versão 8.3, na qual a varredura sequencial sempre começava no início da tabela. O padrão é on.

19.13.2. Compatibilidade de plataforma e cliente #

transform_null_equals (boolean) #

Quando este parâmetro está ativo, expressões da forma expr = NULL (ou NULL = expr) são tratadas como expr IS NULL, ou seja, retornam verdade se expr for avaliado como valor nulo, e falso caso contrário. O comportamento correto em conformidade com o padrão SQL para expr = NULL é sempre retornar nulo (desconhecido). Portanto, o padrão é off.

Entretanto, os formulários filtrados no Microsoft Access geram consultas que parecem usar expr = NULL para testar valores nulos, portanto, se for usada esta interface para acessar o banco de dados, talvez seja bom ativar esta opção. Como as expressões da forma expr = NULL sempre retornam o valor nulo (usando a interpretação do padrão SQL), elas não são muito úteis, e não aparecem frequentemente em aplicações normais, então, na prática, esta opção causa poucos danos. Mas os novos usuários ficam frequentemente confusos sobre a semântica de expressões que envolvem valores nulos, portanto esta opção está desativada por padrão.

Note-se que esta opção afeta apenas a forma exata = NULL, e não outros operadores de comparação ou outras expressões que sejam computacionalmente equivalentes a alguma expressão envolvendo o operador igual (como IN). Portanto, esta opção não é uma correção geral para programação ruim.

Veja Funções e operadores de comparação para obter informações relacionadas.

allow_alter_system (boolean) #

Quando allow_alter_system está definido como off, será retornado um erro se for executado o comando ALTER SYSTEM. Este parâmetro só pode ser definido no arquivo postgresql.conf ou na linha de comando do servidor. O padrão é on.

Note-se que esta configuração não deve ser considerada uma funcionalidade de segurança. Ela apenas desativa o comando ALTER SYSTEM. Ela não impede que um superusuário altere a configuração usando outros comandos SQL. Um superusuário tem muitas maneiras de executar comandos d interpretador de comandos no nível do sistema operacional e, portanto, pode modificar postgresql.auto.conf independentemente do valor dessa configuração.

Desativar esta configuração destina-se a ambientes onde a configuração do PostgreSQL é gerenciada por alguma ferramenta externa. Nesses ambientes, um superusuário bem-intencionado pode usar por engano o comando ALTER SYSTEM para alterar a configuração em vez de usar a ferramenta externa. Isto pode resultar em comportamentos indesejados, como a ferramenta externa sobrescrever a alteração posteriormente ao atualizar a configuração. Definir este parâmetro como off pode ajudar a evitar estes erros.

Este parâmetro controla apenas o uso do comando ALTER SYSTEM. As configurações armazenadas em postgresql.auto.conf entram em vigor mesmo se allow_alter_system estiver definido como off.