PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/03/2022 19:02:58

boubou3131
Membre

Résultat query différent Windows Linux MIN() MAX()

Bonjour,
J'ai deux instances postgres
PROD raspberry raspy os postgres 11
DEV windows postgres 12

Sur chaque instance j'ai une base UTF8 fr-FR.UTF8

avec les mêmes données j'ai des résultats différents ave l'utilisation de MIN() et MAX() GROUP BY

SQL utilisé sur les deux envionnements

-- Table: public.test

-- DROP TABLE IF EXISTS public.test;

CREATE TABLE IF NOT EXISTS public.test
(
    col character varying COLLATE pg_catalog."default",
    groupe character varying COLLATE pg_catalog."default"
)

TABLESPACE pi_data;

interrogation

TRUNCATE TABLE test;
INSERT INTO public.test(col, groupe) VALUES ('JBZ', 'UN');
INSERT INTO public.test(col, groupe) VALUES ('#N/A!', 'UN');   
INSERT INTO public.test(col, groupe) VALUES ('JBZ', 'DEUX');
INSERT INTO public.test(col, groupe) VALUES ('#N/A!', 'DEUX');   
SELECT groupe, max(col) FROM test GROUP BY groupe;


Résultat linux

groupe |  max
--------+-------
DEUX   | #N/A!
UN     | #N/A!
(2 lignes)

Résultat windows

groupe | max
--------+-----
DEUX   | JBZ
UN     | JBZ
(2 lignes)

Interrogation des locales

identiques

zigbee=> SHOW lc_collate;
lc_collate
-------------
fr_FR.UTF-8
(1 ligne)

zigbee=> SHOW lc_collate;
lc_collate
-------------
fr_FR.UTF-8
(1 ligne)

Quelqu'un aurait-il une idée ?

Merci pour votre aide.

Hors ligne

#2 07/03/2022 05:27:15

rjuju
Administrateur

Re : Résultat query différent Windows Linux MIN() MAX()

Dans votre cas le tri est effectué par la libc, qui est probablement différente entre linux et windows.  Si vous voulez un comportement plus stable entre différents systèmes d'exploitation je vous conseille d'utiliser ICU pour le tri.  Malheureusement, cela ne peut pas encore être fait de manière globale mais colonne par colonne.  Avec un peu de chance avoir une collation ICU par défaut sera possible en version 15.

Hors ligne

#3 07/03/2022 10:39:44

boubou3131
Membre

Re : Résultat query différent Windows Linux MIN() MAX()

Merci pour cette information que je n'avais pas vue par moi-même.
Après quelques tests, cela semble régler mon problème.

Hors ligne

Pied de page des forums