pgsql: Fix interval_mul() to not produce insane results.
От | Tom Lane |
---|---|
Тема | pgsql: Fix interval_mul() to not produce insane results. |
Дата | |
Msg-id | E1al14f-0000rC-GN@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix interval_mul() to not produce insane results. interval_mul() attempts to prevent its calculations from producing silly results, but it forgot that zero times infinity yields NaN in IEEE arithmetic. Hence, a case like '1 second'::interval * 'infinity'::float8 produced a NaN for the months product, which didn't trigger the range check, resulting in bogus and possibly platform-dependent output. This isn't terribly obvious to the naked eye because if you try that exact case, you get "interval out of range" which is what you expect --- but if you look closer, the error is coming from interval_out not interval_mul. interval_mul has allowed a bogus value into the system. Fix by adding isnan tests. Noted while testing Vitaly Burovoy's fix for infinity input to to_timestamp(). Given the lack of field complaints, I doubt this is worth a back-patch. Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/a898b409f66f956e99694710f537829db02652c0 Modified Files -------------- src/backend/utils/adt/timestamp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
В списке pgsql-committers по дате отправления: