Vous n'êtes pas identifié(e).
Pages : 1
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
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.
Julien.
https://rjuju.github.io/
Hors ligne
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
Pages : 1