Esta página destaca as diferenças de comportamento entre os recursos do PostgreSQL compatíveis com o Cloud Spanner e os equivalentes do PostgreSQL de código aberto.
Subfluxo 8
Em alguns casos, o PostgreSQL de código aberto retorna um erro como
ERROR: value out of range: underflow
caso o resultado da matemática de ponto flutuante
seja truncado para 0. Números muito próximos de zero que não podem ser representados como
zeros causam um erro de subfluxo.
Nesses casos, a interface PostgreSQL não retorna um erro. Em vez disso, ela retorna o valor 0 truncado.
Função concat()
Na interface do PostgreSQL, a função concat()
retorna
NULL se algum argumento for NULL. No entanto, no PostgreSQL de código aberto, essa função ignora NULLs e retorna uma concatenação de todos os argumentos que não são NULL ou uma string vazia se todos os argumentos forem NULL. Exemplo:
-- Returns `abcdef` in open-source PostgreSQL.
-- Returns NULL in the PostgreSQL interface.
select concat('abc'::text, NULL::text, 'def'::text);
A interface do PostgreSQL e o PostgreSQL de código aberto têm comportamento idêntico para o operador ||
.
Literais de data/hora
Evite usar os seguintes literais especiais para date
e timestamptz
porque a interface do PostgreSQL retorna resultados incorretos: now
, yesterday
, today
, tomorrow
, epoch
, -infinity
e infinity
.
Por exemplo, a consulta a seguir retorna resultados incorretos:
SELECT 'today'::timestamptz;