Re: INTEGER range ("-2147483648" is not accepted.)

Поиск
Список
Период
Сортировка
От Magnus Hagander
Тема Re: INTEGER range ("-2147483648" is not accepted.)
Дата
Msg-id AANLkTimwgKepmPoUE_JaBA-UsgXaXipNGVMUECUROYzA@mail.gmail.com
обсуждение исходный текст
Ответ на INTEGER range ("-2147483648" is not accepted.)  (Satoshi Nagayasu <satoshi.nagayasu@gmail.com>)
Ответы Re: INTEGER range ("-2147483648" is not accepted.)  (Thom Brown <thombrown@gmail.com>)
Список pgsql-docs
On Tue, Jun 22, 2010 at 10:27 AM, Satoshi Nagayasu
<satoshi.nagayasu@gmail.com> wrote:
> Hi all,
>
> I've found a bit strange thing on the INTEGER range in the official manual.
>
> http://www.postgresql.org/docs/8.4/interactive/datatype-numeric.html
>
> According to the official manual, the INTEGER range is "-2147483648 to +2147483647".
> However, my example in below shows that "-2147483648" is not accepted.
>
> Is this correct? Any suggestions?
>
> template1=# SELECT -2147483648::integer;
> ERROR:  integer out of range

This gets parsed as "cast 2147483648 to integer, then take it
negative". Which overflows, because it can only go up to 2147483647.
What you want is:

postgres=# select (-2147483648)::integer;
    int4
-------------
 -2147483648
(1 row)


--
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

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

Предыдущее
От: Thom Brown
Дата:
Сообщение: Re: INTEGER range ("-2147483648" is not accepted.)
Следующее
От: Thom Brown
Дата:
Сообщение: Re: INTEGER range ("-2147483648" is not accepted.)