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

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Mike Toews <mwtoews(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Thom Brown <thombrown(at)gmail(dot)com>, David Fetter <david(at)fetter(dot)org>, 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-23 15:06:07
Message-ID: AANLkTimeeHeJFKVPiBtcnwiH05OVPhSgpCYT2xrtV35v@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs

On Wed, Jun 23, 2010 at 10:29 AM, Mike Toews <mwtoews(at)gmail(dot)com> wrote:
> On 22 June 2010 18:49, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> Thom Brown <thombrown(at)gmail(dot)com> writes:
>>> Is that the right behaviour though?  Shouldn't the signed value reach
>>> the cast step rather than the absolute value?  Or maybe Postgres could
>>> implicitly accept -12345::integer to be (-12345)::integer.  Is there a
>>> blocking reason as to why it must work this way?
>>
>> Yes.  There is no reason to assume that - means the same thing for every
>> datatype.  In general, :: should (and does) bind tighter than *every*
>> operator, to ensure that the appropriately typed operator is applied.
>>
>
> Sorry for adding to the non-DOC drift, but why is - assumed to be a
> unary operator on an unsigned integer, rather than parsed as part of
> an integer? Integers have digits with an optional - or + prefix (not
> unary operators). E.g., ([+\-]?[0-9]+)

You can't assume that a dash followed by digits is always a negative
number. Consider:

SELECT 10-4;

If you we interpret this as "10" followed by "-4", it's a syntax
error. You have to treat it as a separate token and work out later
whether it's a binary operator or a prefix operator.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company

In response to

Browse pgsql-docs by date

  From Date Subject
Next Message Simon Riggs 2010-06-23 18:53:54 Re: hot standby documentation
Previous Message Mike Toews 2010-06-23 14:29:49 Re: INTEGER range ("-2147483648" is not accepted.)