public inbox for [email protected]  
help / color / mirror / Atom feed
From: David Fetter <[email protected]>
To: Thom Brown <[email protected]>
Cc: Satoshi Nagayasu <[email protected]>
Cc: [email protected]
Subject: Re: INTEGER range ("-2147483648" is not accepted.)
Date: Tue, 22 Jun 2010 16:07:54 -0700
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
	<[email protected]>

On Tue, Jun 22, 2010 at 09:36:30AM +0100, Thom Brown wrote:
> 2010/6/22 Satoshi Nagayasu <[email protected]>:
> > 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 <[email protected]> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: [email protected]
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

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



view thread (14+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: INTEGER range ("-2147483648" is not accepted.)
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox