BUG #5975: Incorrect result from mod function with cast

Поиск
Список
Период
Сортировка
От John Dickson
Тема BUG #5975: Incorrect result from mod function with cast
Дата
Msg-id 201104130030.p3D0UCSZ076614@wwwmaster.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #5975: Incorrect result from mod function with cast  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      5975
Logged by:          John Dickson
Email address:      jdickson@tnsi.com
PostgreSQL version: 8.3.11
Operating system:   RedHat EL 5.6
Description:        Incorrect result from mod function with cast
Details:

The mod function (and the % operator) can return an incorrect result when
combined with a cast().

The following SQL (executed on 8.3.11) shows a result one higher than the
maximum permissible remainder when combined with a cast:

-----
select 1129590 % 66,
  cast(1129590 as numeric(21, 0)) % 66;

 ?column? | ?column?
----------+----------
        0 |       66
(1 row)
-----

When executed on Postgres 8.2.5 (on Centos 4.6), the results are:
-----
 ?column? | ?column?
----------+----------
        0 |        0
(1 row)
-----

We're using the cast here to demonstrate the bug, but we actually strike the
problem when operating on values from a numeric(21, 0) column rather than
using cast().

We haven't tested this on later releases of 8.3, but didn't see any likely
fixes in the changelog.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "Jeff Wu"
Дата:
Сообщение: BUG #5974: UNION construct type cast gives poor error message
Следующее
От: hubert depesz lubaczewski
Дата:
Сообщение: 9.1 doesn't start when died mid-backup