Обсуждение: log_rotation_age integer overflow display quirk

Поиск
Список
Период
Сортировка

log_rotation_age integer overflow display quirk

От
Stefan Kaltenbrunner
Дата:
I just noticed that setting log_rotation_age to a value larger than 24 
days results in rather weird output (I have not actually tested yet if 
that affects the functionality too or just the output):


test=# show log_rotation_age; log_rotation_age
------------------ -2134967296ms
(1 row)

this is a 64bit build of 8.3.3 on Debian/Linux.


Stefan


Re: log_rotation_age integer overflow display quirk

От
Bernd Helmle
Дата:
--On Freitag, Juli 04, 2008 11:31:07 +0200 Stefan Kaltenbrunner 
<stefan@kaltenbrunner.cc> wrote:

> I just noticed that setting log_rotation_age to a value larger than 24
> days results in rather weird output (I have not actually tested yet if
> that affects the functionality too or just the output):
>
>
> test=# show log_rotation_age;
>   log_rotation_age
> ------------------
>   -2134967296ms
> (1 row)

This seems to be a bug in _ShowOption(), where the corresponding value is 
converted into milliseconds to get the biggest possible time unit to 
display. This overflows the result variable (which is declared as int), 
causing this strange output.

--  Thanks
                   Bernd


Re: log_rotation_age integer overflow display quirk

От
Tom Lane
Дата:
Bernd Helmle <mailings@oopsware.de> writes:
> --On Freitag, Juli 04, 2008 11:31:07 +0200 Stefan Kaltenbrunner 
> <stefan@kaltenbrunner.cc> wrote:
>> I just noticed that setting log_rotation_age to a value larger than 24
>> days results in rather weird output (I have not actually tested yet if
>> that affects the functionality too or just the output):

> This seems to be a bug in _ShowOption(), where the corresponding value is 
> converted into milliseconds to get the biggest possible time unit to 
> display. This overflows the result variable (which is declared as int), 
> causing this strange output.

Yup --- fixed by using int64 arithmetic for the units conversion.
        regards, tom lane