From: | Jan Wieck <JanWieck(at)Yahoo(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Rajesh Kumar Mallah <mallah(at)trade-india(dot)com>, Michael Glaesemann <grzm(at)myrealbox(dot)com>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Arbitrary precision arithmatic with pgsql |
Date: | 2004-08-31 15:12:40 |
Message-ID: | 41349568.6020400@Yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On 8/31/2004 11:04 AM, Tom Lane wrote:
> Jan Wieck <JanWieck(at)Yahoo(dot)com> writes:
>> I agree that doing
>> select 2::numeric ^ 100;
>> should emit some sort of a warning.
>
> I do not. The conversion of 2::numeric to float is exact, so AFAICS
> the only way to do that would be to make *every* coercion of numeric to
> float emit a warning. This is not a reasonable response to the fact
> that Rajesh is unaware of the set of available operators. Moreover
> it would essentially break float constants (since "2.0" starts life
> as numeric and is only cast to float when the context demands).
I thought they start life as an unknown literal ... that of course
changes things.
Jan
>
> I'd be in favor of adding a numeric^numeric operator to ease access to
> the existing pow() code, but I'm not sure this makes the issue go away
> entirely. It looks like "select 2 ^ 100" would still default to being
> a float operation.
>
> regression=# create operator ^ (procedure=pow, leftarg=numeric, rightarg=numeric);
> CREATE OPERATOR
> regression=# select 2::numeric ^ 100;
> ?column?
> --------------------------------------------------
> 1267650600228229401496703205376.0000000000000000
> (1 row)
>
> regression=# select 2 ^ 100;
> ?column?
> ----------------------
> 1.26765060022823e+30
> (1 row)
>
> regression=# select 2.0 ^ 100;
> ?column?
> --------------------------------------------------
> 1267650600228229401496703205376.0000000000000000
> (1 row)
>
>
> regards, tom lane
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck(at)Yahoo(dot)com #
From | Date | Subject | |
---|---|---|---|
Next Message | Manuel Sugawara | 2004-08-31 17:23:08 | Re: colored PL with emacs |
Previous Message | Tom Lane | 2004-08-31 15:04:52 | Re: Arbitrary precision arithmatic with pgsql |