BUG #1617: TIME WITH TIME ZONE comparison is partially broken
От | Dennis Vshivkov |
---|---|
Тема | BUG #1617: TIME WITH TIME ZONE comparison is partially broken |
Дата | |
Msg-id | 20050422110845.7E2CFF13AD@svr2.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #1617: TIME WITH TIME ZONE comparison is partially broken
|
Список | pgsql-bugs |
The following bug has been logged online: Bug reference: 1617 Logged by: Dennis Vshivkov Email address: walrus@amur.ru PostgreSQL version: 7.4.6, 8.0.1 Operating system: Debian GNU/Linux, kernel 2.4 Description: TIME WITH TIME ZONE comparison is partially broken Details: SELECT MAX(time) FROM ( SELECT '04:00:01+02'::TIMETZ UNION SELECT '05:00:00+03'::TIMETZ ) AS tbl(time); max ------------- 05:00:00+03 (1 row) [8.0.1|src/backend/utils/adt/date.c] timetz_cmp_internal(): double t1, t2; /* Primary sort is by true (GMT-equivalent) time */ t1 = time1->time + time1->zone; t2 = time2->time + time2->zone; if (t1 > t2) return 1; if (t1 < t2) return -1; This code is only valid when HAVE_INT64_TIMESTAMP is NOT the case. When it is (in Debian builds, see versions below), seconds (->zone) are added to microseconds (->time), which makes no sense. I checked Release Notes for 8.0.2, they don't seem to mention this bug. SELECT version(): PostgreSQL 7.4.6 on i386-pc-linux-gnu, compiled by GCC i386-linux-gcc (GCC) 3.3.5 (Debian 1:3.3.5-6) PostgreSQL 8.0.1 on i386-pc-linux-gnu, compiled by GCC cc (GCC) 3.3.5 (Debian 1:3.3.5-5)
В списке pgsql-bugs по дате отправления: