Vous n'êtes pas identifié(e).
Bonjour,
On vient de passer à Postgreql 15. Le tri alphabétique des chaînes de caractères a changé. Par exemple pour la requête "SELECT name FROM my_table ORDER BY name DESC" on a
Postgresql 12
"Allée de l'Ilôt des Lacs"
"Allée de l'Îlot des Lacs"
"Allée de l'Îlot des Lacs"
Postgresql 15
"Allée de l'Îlot des Lacs"
"Allée de l'Îlot des Lacs"
"Allée de l'Ilôt des Lacs"
La différence se situe au niveau des caractères avec accent circonflexe. Mais on a conservé la même configuration entre les deux instances.
Encoding | Collate | Ctype
UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8
Dans postgresql.conf il y a:
# These settings are initialized by initdb, but they can be changed.
lc_messages = C # locale for system error message
# strings
lc_monetary = C # locale for monetary formatting
lc_numeric = C # locale for number formatting
lc_time = C # locale for time formatting
Je souhaite votre aide pour comprendre le problème et le résoudre.
Merci
Hors ligne
N'auriez-vous pas profité du changement de version de PostgreSQL pour mettre à jour tous les paquets systèmes, voire la version du système d'exploitation ?
Guillaume.
Hors ligne
Tout à fait, on est passé aussi de Debian stretch à Debian bullyse.
Hors ligne
Le problème vient très probablement de la mise à jour de glibc (2.24 sur strech et 2.31 sur bullseye). Vous devriez avoir le même comportement au niveau de l'OS avec un simple "sort" en utilisant la même collation.
Julien.
https://rjuju.github.io/
Hors ligne
Oui, j'ai pu reproduire le même comportement avec la commande "sort". Merci beaucoup.
Hors ligne
La différence se situe au niveau des caractères avec accent circonflexe
En fait il y a beaucoup plus de différences.
Quelques exemples ici: https://blog-postgresql.verite.pro/2018 … grade.html
Seule la collation "C" ou "POSIX" offre une garantie absolue de permanence des tris lors des montées de version des OS, et de tri identique entre OS différents.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
merci
Hors ligne