17.12. Compatibilité de version et de plateforme
17.12.1. Versions précédentes de PostgreSQL
-
add_missing_from (boolean)
-
Lorsque ce paramètre est activé (on), les tables référencées par une requête
sont automatiquement ajoutées à la clause FROM si elles n'y sont pas déjà présentes. Ce
comportement n'est pas compatible avec le standard SQL et
beaucoup de personnes ne l'aiment pas car elle masque les
erreurs (comme de faire référence à une table à la place de
son alias). Désactivé par défaut (off), ce paramètre peut être activé pour des
raisons de compatibilité avec les versions antérieures à
PostgreSQL™ 8.1, pour
lesquelles ce comportement était activé par défaut.
Même lorsque cette variable est activée, un message
d'avertissement est émis pour chaque entrée FROM implicite référencée par une requête. Les
utilisateurs sont encouragés à mettre à jour leurs
applications pour qu'elles ne s'appuient pas sur ce
comportement. Il suffit pour cela d'ajouter toutes les tables
référencées par une requête dans la clause FROM de cette requête (ou dans sa clause
USING dans le cas d'un
DELETE
).
-
array_nulls (boolean)
-
Contrôle si l'analyseur de saisie de tableau reconnaît les
NULL sans guillemets comme des
éléments de tableaux NULL. Activé par défaut (on), il autorise la saisie de valeurs NULL
dans un tableau. Néanmoins, les versions de PostgreSQL™ antérieures à la 8.2
ne supportaient pas les valeurs NULL dans les tableaux. De ce
fait, ces versions traitent NULL
comme une chaîne dont le contenu est « NULL ». Pour une compatibilité ascendante
avec les applications nécessitant l'ancien comportement, ce
paramètre peut être désactivé (off).
Il est possible de créer des valeurs de tableau contenant des
valeurs NULL même quand cette variable est à off.
-
backslash_quote (string)
-
Contrôle si un guillemet simple peut être représenté par un
\' dans une chaîne. La façon
préférée, conforme au standard SQL, de représenter un
guillemet est de le doubler ('')
mais, historiquement, PostgreSQL™ a aussi accepté
\'. Néanmoins, l'utilisation de
\' présente des problèmes de
sécurité car certains encodages client contiennent des
caractères multi-octets dans lesquels le dernier octet est
l'équivalent ASCII numérique d'un \.
Si le code côté client ne fait pas un échappement correct,
alors une attaque par injection SQL est possible. Ce risque
peut être évité en s'assurant que le serveur rejette les
requêtes dans lesquelles apparait un guillemet échappé avec
un antislash. Les valeurs autorisées de backslash_quote sont on (autorise \' en
permanence), off (le rejette en
permanence) et safe_encoding (ne
l'autorise que si l'encodage client n'autorise pas l'ASCII
\ dans un caractère multioctet).
safe_encoding est le paramétrage par
défaut.
Dans une chaîne litérale conforme au standard, \ ne signifie que \.
Ce paramètre affecte la gestion des chaînes non conformes,
incluant la syntaxe de chaînes d'échappement (E'...').
-
default_with_oids (boolean)
-
Contrôle si les commandes
CREATE TABLE
et
CREATE TABLE AS
incluent une colonne OID dans les tables nouvellement créées,
si ni WITH OIDS ni WITHOUT OIDS ne sont précisées. Ce paramètre
détermine aussi si les OID sont inclus dans les tables créés
par
SELECT
INTO
. Dans PostgreSQL™ 8.1, default_with_oids est désactivée (off) par défaut, contrairement aux versions
précédentes.
L'utilisation d'OID dans les tables utilisateur est
considérée comme obsolète. Il est donc préférable pour la
plupart des installations de laisser ce paramètre désactivé.
Les applications qui requièrent des OID pour une table
particulière doivent préciser WITH
OIDS lors de la création de la table. Cette variable
peut être activée pour des raisons de compatibilité avec les
anciennes applications qui ne suivent pas ce comportement.
-
escape_string_warning (boolean)
-
S'il est activé (on), un message
d'avertissement est affiché si un antislash (\) apparaît dans une chaîne litérale ordinaire
(syntaxe '...') et que standard_conforming_strings est désactivé. Il
est activé par défaut (on).
Les applications qui souhaitent utiliser l'antislash comme
échappement doivent être modifiées pour utiliser la syntaxe
de chaîne d'échappement (E'...') car
le comportement par défaut des chaînes ordinaires changera
dans une prochaine version pour des raisons de compatibilité
avec le standard SQL. Cette variable peut être activée pour
aider à la détection des applications non conformes.
-
regex_flavor (string)
-
La « flaveur » des
expressions rationnelles peut être configurée à advanced (avancée), extended (étendue) ou basic (basique). La valeur par défaut est
advanced. La configuration
extended peut être utile pour une
compatibilité ascendante avec les versions antérieures à
PostgreSQL™ 7.4. Voir
Section 9.7.3.1,
« Détails des expressions rationnelles » pour
plus de détails.
-
sql_inheritance (boolean)
-
Contrôle la sémantique de l'héritage. Désactivé (off), les sous-tables ne sont pas incluses par
défaut dans les différentes commandes ; généralement le mot
clé ONLY est nécessaire. Ceci a été
ajouté pour la compatibilité avec les versions antérieures à
la 7.1. Voir Section 5.8,
« L'héritage » pour plus d'informations.
-
standard_conforming_strings
(boolean)
-
Contrôle si les chaînes ordinaires ('...') traitent les antislashs litéralement,
comme cela est indiqué dans le standard SQL. Désactivé par
défaut (off), ce paramètre ramène
PostgreSQL™ à son
comportement historique pour le traitement des antislashs
comme caractères d'échappement. La valeur par défaut sera
passée à on dans une prochaine
version pour améliorer la compatibilité avec le standard. Les
applications peuvent vérifier ce paramètre pour déterminer la
façon dont elles doivent traiter les chaînes litérales. La
présence de ce paramètre indique aussi que la syntaxe de
chaîne d'échappement (E'...') est
supportée. La syntaxe de chaîne d'échappement doitt être
utilisée pour les applications traitant les antislashs comme
des caractères d'échappement.
17.12.2. Compatibilité entre la plateforme et le client
-
transform_null_equals (boolean)
-
Lorsque ce paramètre est activé (on), les expressions de la forme
expr
=
NULL (ou NULL =
expr
) sont traitées comme
expr
IS NULL, c'est-à-dire
qu'elles renvoient vrai si
expr
s'évalue à la valeur NULL,
et faux sinon. Le bon comportement, compatible avec le
standard SQL, de
expr
= NULL est de toujours
renvoyer NULL (inconnu). De ce fait, ce paramètre est
désactivé par défaut.
Toutefois, les formulaires filtrés dans Microsoft Access™ engendrent des
requêtes qui utilisent
expr
= NULL pour tester les
valeurs NULL. Il peut donc être souhaitable, lorsque cette
intarface est utilisée pour accéder à une base de données,
d'activer ce paramètre. Comme les expressions de la forme
expr
= NULL renvoient
toujours la valeur NULL (en utilisant la bonne
interprétation), elles ne sont pas très utiles et
n'apparaissent pas souvent dans les applications normales. De
ce fait, ce paramètre a peu d'utilité en pratique. Mais la
sémantique des expressions impliquant des valeurs NULL est
souvent source de confusion pour les nouveaux utilisateurs.
C'est pourquoi ce paramètre n'est pas activé par défaut.
Ce paramètre n'affecte que la forme exacte = NULL, et pas les autres opérateurs de
comparaison ou expressions équivalents en terme de calcul à
des expressions qui impliquent l'opérateur égal (tels que
IN). De ce fait, ce paramètre ne
doit pas être considéré comme un correctif général à une
mauvaise programmation.
De plus amples informations sont disponibles dans la
Section 9.2,
« Opérateurs de comparaison ».
|