Problèmes connus dans l'interface PostgreSQL pour Cloud Spanner

Cette page indique les différences de comportement entre les fonctionnalités PostgreSQL compatibles avec Cloud Spanner et leurs équivalents PostgreSQL Open Source.

Flottage 8

Dans certains cas, le logiciel Open Source PostgreSQL renvoie une erreur telle que ERROR: value out of range: underflow si le résultat du calcul à virgule flottante est tronqué à 0. Les nombres trop proches de zéro qui ne sont pas représentables comme étant distincts de zéro génèrent une erreur de dépassement de capacité.

Dans ce cas, l'interface PostgreSQL ne renvoie pas d'erreur. Au lieu de cela, il renvoie la valeur tronquée 0.

Fonction concat()

Dans l'interface PostgreSQL, la fonction concat() renvoie NULL si un argument est NULL. Toutefois, dans PostgreSQL Open Source, cette fonction ignore les valeurs NULL et renvoie une concaténation de tous les arguments non NULL, ou une chaîne vide si tous les arguments sont NULL. Exemple :

-- Returns `abcdef` in open-source PostgreSQL.
-- Returns NULL in the PostgreSQL interface.
select concat('abc'::text, NULL::text, 'def'::text);

L'interface PostgreSQL et le logiciel Open Source PostgreSQL ont le même comportement pour l'opérateur ||.

Littéraux de date/heure

Évitez d'utiliser les littéraux spéciaux suivants pour date et timestamptz, car l'interface PostgreSQL renvoie des résultats incorrects : now, yesterday, today, tomorrow, epoch, -infinity et infinity.

Par exemple, la requête suivante renvoie des résultats incorrects:

SELECT 'today'::timestamptz;