Обсуждение: Casting on the limit

Поиск
Список
Период
Сортировка

Casting on the limit

От
"Ottó Havasvölgyi"
Дата:
Hi,

In 8.2.5:

This does not work (out of range):
select -32768::int2

But this works:
select cast(-32768 as int2);

What is the difference between the two syntax in the background? I
always thought they are the same.

Best regards,
Otto


Re: Casting on the limit

От
"Ottó Havasvölgyi"
Дата:
Sorry, version is 8.2.4

2008/1/21, Ottó Havasvölgyi <havasvolgyi.otto@gmail.com>:
> Hi,
>
> In 8.2.5:
>
> This does not work (out of range):
> select -32768::int2
>
> But this works:
> select cast(-32768 as int2);
>
> What is the difference between the two syntax in the background? I
> always thought they are the same.
>
> Best regards,
> Otto
>


Re: Casting on the limit

От
"Ottó Havasvölgyi"
Дата:
But 8.2.6 works the same. I have just upgraded.

2008/1/21, Ottó Havasvölgyi <havasvolgyi.otto@gmail.com>:
> Sorry, version is 8.2.4
>
> 2008/1/21, Ottó Havasvölgyi <havasvolgyi.otto@gmail.com>:
> > Hi,
> >
> > In 8.2.5:
> >
> > This does not work (out of range):
> > select -32768::int2
> >
> > But this works:
> > select cast(-32768 as int2);
> >
> > What is the difference between the two syntax in the background? I
> > always thought they are the same.
> >
> > Best regards,
> > Otto
> >
>


Re: Casting on the limit

От
"Heikki Linnakangas"
Дата:
Ottó Havasvölgyi wrote:
> In 8.2.5:
>
> This does not work (out of range):
> select -32768::int2
>
> But this works:
> select cast(-32768 as int2);
>
> What is the difference between the two syntax in the background? I
> always thought they are the same.

"select -32768::int2" is equal to "select -(32768::int2)", and 32768
doesn't fit in an int2.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

Re: Casting on the limit

От
"Ottó Havasvölgyi"
Дата:
Thank you:)  I didn't even thought of this case. I am a bit surprised
that "::" has higher precedence than negation, but maybe it has some
cause.
Sorry for sending it to this list.

Best regards,
Otto

2008/1/21, Heikki Linnakangas <heikki@enterprisedb.com>:
> Ottó Havasvölgyi wrote:
> > In 8.2.5:
> >
> > This does not work (out of range):
> > select -32768::int2
> >
> > But this works:
> > select cast(-32768 as int2);
> >
> > What is the difference between the two syntax in the background? I
> > always thought they are the same.
>
> "select -32768::int2" is equal to "select -(32768::int2)", and 32768
> doesn't fit in an int2.
>
> --
>   Heikki Linnakangas
>   EnterpriseDB   http://www.enterprisedb.com
>