Search Postgresql Archives

Re: numeric cast oddity

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



As I mentioned, it is more then just a headers issue it is a type issue.

I have a view that has a column of type numeric(20,4)

If I replace that column with -1::numeric(20,4) or - (1::numeric(20,4))
the type that goes to the view is numeric without any scale or precision
and then I get an error that I cannot change the column type.

It seems to be a negative number issue because if I use a positive
number or null it gives me the numeric(20,4) it is only for negative
that it gives me the numeric without scale or precision.


Sim



Tom Lane wrote:

> I wrote:
>   
>> which are indeed different (might be worth looking into why)
>>     
>
> Oh: the reason they're different is that these expressions are not
> actually the same thing.  Minus binds less tightly than typecast.
> You get consistent results if you input equivalent expressions:
>
> regression=# select cast(-1 as numeric(20,4));
>  numeric 
> ---------
>  -1.0000
> (1 row)
>
> regression=# select (-1)::numeric(20,4);
>  numeric 
> ---------
>  -1.0000
> (1 row)
>
> regression=# select - cast(1 as numeric(20,4));
>  ?column? 
> ----------
>   -1.0000
> (1 row)
>
> regression=# select - 1::numeric(20,4);
>  ?column? 
> ----------
>   -1.0000
> (1 row)
>
> What we're actually seeing here is that the code to guess a default
> column name doesn't descend through a unary minus operator, it just
> punts upon finding an Op node.
>
> 			regards, tom lane
>   

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux