Auf dieser Seite werden Unterschiede im Verhalten zwischen den in Cloud Spanner unterstützten PostgreSQL-Funktionen und ihren Open-Source-PostgreSQL-Entsprechungen beschrieben.
Float8
In einigen Fällen gibt PostgreSQL als Open Source einen Fehler wie ERROR: value out of range: underflow
zurück, wenn das Ergebnis der Gleitkommaberechnung auf 0 gekürzt werden soll. Zahlen zu nah bei null, die nicht als null erkennbar sind und einen Unterflussfehler verursachen,
Die PostgreSQL-Schnittstelle gibt in diesen Fällen keinen Fehler zurück, sondern gibt den gekürzten Wert 0 zurück.
concat()-Funktion
In der PostgreSQL-Oberfläche gibt die Funktion concat()
NULL zurück, wenn ein Argument NULL ist. In Open-Source-PostgreSQL wird diese Funktion jedoch von NULL ignoriert und eine Verkettung aller Nicht-NULL-Argumente zurückgegeben. Wenn alle Argumente NULL sind, wird eine leere Verkettung zurückgegeben. Beispiel:
-- Returns `abcdef` in open-source PostgreSQL.
-- Returns NULL in the PostgreSQL interface.
select concat('abc'::text, NULL::text, 'def'::text);
Die PostgreSQL-Oberfläche und Open-Source-PostgreSQL haben das gleiche Verhalten für den Operator ||
.
Literale vom Typ „Datum/Uhrzeit“
Verwenden Sie nicht die folgenden Literale für date
und timestamptz
, da in der PostgreSQL-Oberfläche falsche Ergebnisse zurückgegeben werden: now
, yesterday
, today
, tomorrow
, epoch
, -infinity
und infinity
.
Beispiel: Die folgende Abfrage gibt falsche Ergebnisse zurück:
SELECT 'today'::timestamptz;