Skip site navigation (1) Skip section navigation (2)

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

From: David Fetter <david(at)fetter(dot)org>
To: Thom Brown <thombrown(at)gmail(dot)com>
Cc: Satoshi Nagayasu <satoshi(dot)nagayasu(at)gmail(dot)com>,pgsql-docs(at)postgresql(dot)org
Subject: Re: INTEGER range ("-2147483648" is not accepted.)
Date: 2010-06-22 23:07:54
Message-ID: 20100622230754.GE15203@fetter.org (view raw or flat)
Thread:
Lists: pgsql-docs
On Tue, Jun 22, 2010 at 09:36:30AM +0100, Thom Brown wrote:
> 2010/6/22 Satoshi Nagayasu <satoshi(dot)nagayasu(at)gmail(dot)com>:
> > 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?
> >
> > Regards,
> >
> > ---------------------------------------------------------------------
> > template1=# SELECT version();
> >                                                  version
> > ------------------------------------------------------------------------------------------------------------
> >  PostgreSQL 8.4.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42), 32-bit
> > (1 row)
> >
> > template1=# SELECT -2147483647::integer;
> >  ?column?
> > -------------
> >  -2147483647
> > (1 row)
> >
> > template1=# SELECT -2147483648::integer;
> > ERROR:  integer out of range
> > template1=# SELECT +2147483648::integer;
> > ERROR:  integer out of range
> > template1=# SELECT +2147483647::integer;
> >  ?column?
> > ------------
> >  2147483647
> > (1 row)
> >
> > template1=#
> > ---------------------------------------------------------------------
> >
> 
> Hmm... yes, that's not what I'd expect either:
> 
> postgres=# SELECT -32768::smallint;
> ERROR:  smallint out of range
> postgres=# SELECT -9223372036854775808::bigint;
> ERROR:  bigint out of range
> 
> I think those min values are all out by 1.

Nope.  Same problem.

SELECT (-32768)::smallint;
 -32768

SELECT (-9223372036854775808)::bigint;
 -9223372036854775808

I agree that the appropriate error message should complain about the
actual error, which is that 32768, or 2147483648, or
9223372036854775808, as the case may be, is out of range in the
positive direction.  Possibly the "hint" might mention that :: binds
tighter than - does.

Cheers,
David.
-- 
David Fetter <david(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david(dot)fetter(at)gmail(dot)com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

In response to

Responses

pgsql-docs by date

Next:From: Thom BrownDate: 2010-06-22 23:16:06
Subject: Re: INTEGER range ("-2147483648" is not accepted.)
Previous:From: Joshua TolleyDate: 2010-06-22 23:04:03
Subject: Re: hot standby documentation

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group