이 페이지에서는 Cloud Spanner에서 지원되는 PostgreSQL 기능과 해당 오픈소스 PostgreSQL 간의 동작 차이점을 설명합니다.
Float8 언더플로
부동 소수점 수학 결과가 0으로 잘리면 오픈소스 PostgreSQL이 ERROR: value out of range: underflow
와 같은 오류를 반환하는 경우가 있습니다. 0과 너무 가까우며 0과 구분하기 어려울 수 있는 숫자는 언더플로 오류를 유발합니다.
PostgreSQL 인터페이스는 이러한 경우 오류를 반환하지 않습니다. 대신 잘린 0 값을 반환합니다.
concat() 함수
PostgreSQL 인터페이스에서 concat()
함수는 인수가 NULL이면 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은 ||
연산자와 동일합니다.
날짜/시간 리터럴
PostgreSQL 인터페이스가 잘못된 결과를 반환하므로 date
및 timestamptz
에는 특수 리터럴(now
,yesterday
, today
, tomorrow
, epoch
, -infinity
, infinity
)을 사용하지 않는 것이 좋습니다.
예를 들어 다음 쿼리는 잘못된 결과를 반환합니다.
SELECT 'today'::timestamptz;