Migration vers 14 et supérieures¶
(Référence : https://docs.postgresql.fr/14/release-14.html)
Protocole¶
- Suppression de la version 2 du protocole implémenté côté serveur et dans la
libpq
:
La version 3 du protocole est utilisée par défaut depuis PostgreSQL 7.4 (sorti en 2003). * Suppression du support de la compression SSL :
La compression était désactivée par défaut depuis longtemps. La plupart des versions actuelles d’OpenSSL et TLS ne l’utilisent plus.
Paramètres et gestion du serveur¶
- Suppression du paramètre
vacuum_cleanup_index_scale_factor
:
Ce paramètre était déjà ignoré à partir de la version 13.3.
- Suppression du paramètre
operator_precedence_warning
:
Ce paramètre était utilisé pour émettre un message d’avertissements aux applications suite au passage à PostgreSQL 9.5.
- Changement de la valeur par défaut du paramètre
password_encryption
parscram-sha-256
:
Précédemment, md5
était utilisé par défaut.
pg_hba.conf
¶
- Révision de l’option
clientcert
dans le fichierpg_hba.conf
:
Les valeurs 0
, 1
et no-verify
ne sont plus supportées. Seules les valeurs verify-ca
et verify-full
peuvent être spécifiées.
SQL¶
- Les objets tels que les agrégats et les opérateurs faisant référence à certaines fonctions internes de PostgreSQL sur les tableaux doivent être recréés :
Les fonctions internes sont les suivantes : array_append()
, array_prepend()
, array_cat()
, array_position()
, array_positions()
, array_remove()
, array_replace()
et width_bucket()
.
- Les caractères d’échappements
\D
et\W
correspondent au caractère de saut de ligne en mode sensible aux sauts de lignes (voir le commit pour le détail.)
En version 13 :
=> SELECT regexp_match(E'Pg\nSQL', '\D{6}', 'n');
┌──────────────┐
│ regexp_match │
├──────────────┤
│ │
└──────────────┘
(1 row)
En version 14 :
=> SELECT regexp_match(E'Pg\nSQL', '\D{6}', 'n');
┌──────────────┐
│ regexp_match │
├──────────────┤
│ {"Pg ↵│
│ SQL"} │
└──────────────┘
(1 row)
- L’usage de simples guillemets autour du nom d’un langage avec les ordres
CREATE/DROP LANGUAGE
n’est plus permis.
Fonctions¶
- Retrait de la possibilité d’indiquer un nombre négatif à la fonction
factorial()
:
Auparavant la fonction aurait retourné 1
.
- Une valeur négative n’est plus admise comme premier paramètre de la fonction
normal_rand fonction()
de l’extensiontablefunc
; - Les fonctions
var_samp()
etstddev_samp()
avec un paramètre de typenumeric
retournent à présentNULL
si une valeurNaN
est passée en argument, et non plus la valeurNaN
.
En version 13 :
=> SELECT var_samp('NaN'::numeric);
┌──────────┐
│ var_samp │
├──────────┤
│ NaN │
└──────────┘
(1 row)
```sql
=> \pset null 'NULL'
Null display is "NULL".
=> SELECT var_samp('NaN'::numeric);
┌──────────┐
│ var_samp │
├──────────┤
│ NULL │
└──────────┘
(1 row)
- Le type de la donnée retournée par la fonction
extract()
passe defloat8
ànumeric
; - Suppression de la
fonction numeric_fact()
pour calculer la factorielle d’un entier.
Opérateurs¶
- Les opérateurs
@
et~
n’existent plus pour les types de données géométriques et les contribscube
,hstore
,intarray
etseg
.
Ça ne devrait pas poser de problème puisque les opérateurs <@
et @>
les remplacent respectivement, et que leur usage est recommandé depuis longtemps.
- Suppression des opérateurs
!
et!!
pour calculer la factorielle d’un entier (le but est de supprimer le dernier des opérateurs « postfixés » ou « unaires droits » ) : utiliser maintenant la fonctionfactorial()
:
En version 14 :
=> CREATE OPERATOR ! (FUNCTION = factorial,LEFTARG = bigint);
ERROR: operator right argument type must be specified
DETAIL: Postfix operators are not supported.
- Neutralisation des opérateurs de contenance (
<@
et@>
) du moduleintarray
avec les index GiST.
Extensions et contribs¶
- Les noms de paramètres personnalisés doivent utiliser des caractères respectant la règle de nommage des identifiants SQL sans guillemets ;
- Suppression de la contrib pg_standby, inutile de nos jours.