Cloud Spanner 的 PostgreSQL 界面中的已知问题

此页面指出了 Cloud Spanner 支持的 PostgreSQL 功能与其开源 PostgreSQL 等效功能的行为差异。

浮点数 8 下溢

在某些情况下,如果浮点数学结果的结果被截断为 0,开源 PostgreSQL 会返回一个错误,如 ERROR: value out of range: underflow。数值接近 0 且无法表示为 0 会导致下溢错误。

在这些情况下,PostgreSQL 接口不会返回错误,而是会返回截断的 0 值。

concat() 函数

在 PostgreSQL 界面中,如果任何参数为 NULL,concat() 函数会返回 NULL。但是,在开源 PostgreSQL 中,此函数会忽略 NULL 并返回所有非 NULL 参数的串联;如果所有参数均为 NULL,则返回空字符串。例如:

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

PostgreSQL 接口和开源 PostgreSQL 具有与 || 运算符相同的行为。

日期/时间字面量

避免对 datetimestamptz 使用以下特殊字面量,因为 PostgreSQL 接口返回的结果不正确:nowyesterdaytodaytomorrowepoch-infinityinfinity

例如,以下查询会返回不正确的结果:

SELECT 'today'::timestamptz;