integer input functions : interesting limit behaviour

Поиск
Список
Период
Сортировка
От Pierre Frédéric Caillaud
Тема integer input functions : interesting limit behaviour
Дата
Msg-id op.uzxqv2grcke6l8@soyouz
обсуждение исходный текст
Ответы Re: integer input functions : interesting limit behaviour  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
I was looking in the int*in() functions and found some interesting limit  
behaviours :


* Here, the most negative value is sometimes accepted, sometimes not :

test=> SELECT -2147483648::INTEGER;
ERREUR:  entier en dehors des limites

test=> SELECT '-2147483648'::INTEGER;    int4
------------- -2147483648

* Same for smallint :

test=> SELECT -32768::SMALLINT;
ERREUR:  smallint en dehors des limites

test=> SELECT '-32768'::SMALLINT;  int2
-------- -32768
(1 ligne)

* For BIGINT :

test=> SELECT -9223372036854775808::BIGINT;
ERREUR:  bigint en dehors des limites

test=> SELECT '-9223372036854775808'::BIGINT;         int8
---------------------- -9223372036854775808
(1 ligne)

Temps : 0,185 ms
test=> SELECT '-000000009223372036854775808'::BIGINT;
ERREUR:  la valeur « -000000009223372036854775808 » est en dehors des  
limites du type bigint
Interesting, isn't it ?
I guess it's good to reject -2147483648::INTEGER because this is ugly :

test=> CREATE TABLE foo AS (SELECT '-2147483648'::INTEGER AS x);
test=> SELECT -x FROM foo;
ERREUR:  entier en dehors des limites
I can make a fix...


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

Предыдущее
От: Jan Otto
Дата:
Сообщение: Re: More Snow Leopard fun: multiarch problems while building plperl
Следующее
От: Stuart Bishop
Дата:
Сообщение: Re: Time-based Releases WAS: 8.5 release timetable, again