Aller au contenu

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 par scram-sha-256 :

Précédemment, md5 était utilisé par défaut.

pg_hba.conf

  • Révision de l’option clientcert dans le fichier pg_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’extension tablefunc ;
  • Les fonctions var_samp() et stddev_samp() avec un paramètre de type numeric retournent à présent NULL si une valeur NaN est passée en argument, et non plus la valeur NaN.

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 de float8 à 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 contribs cube, hstore, intarray et seg.

Ç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 fonction factorial() :

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 module intarray 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.