On 8/31/2004 9:15 AM, Rajesh Kumar Mallah wrote:

Michael Glaesemann wrote:


On Aug 31, 2004, at 9:17 PM, Michael Glaesemann wrote:

What you need is a power operation for numeric, which I think you'd have to write yourself,


Looking a little closer, there is a pow() function that takes two numeric arguments and returns numeric.

<http://www.postgresql.org/docs/current/static/functions-math.html>

test=# select pow(2::numeric,100::numeric);
                       pow
--------------------------------------------------
 1267650600228229401496703205376.0000000000000000
(1 row)

Sorry for the misinformation.

If you'd like, I think you can overload the ^ operator to work on numeric as well if you don't want to use pow(). See the following page for more information.

<http://www.postgresql.org/docs/current/static/sql-createoperator.html>


Yep thats cool.  Thanks for the research!

but i still wonder if a warning or info message were
appropriate at some stage so that people do not confuse it
with sielent loss of accuracy . I know this example is *not* a
case of where postgresql is truncating data at the insert level
(like mysql does) but at the calculation level.

I agree that doing

    select 2::numeric ^ 100;

should emit some sort of a warning. Because what happens here is that the numeric value is degraded to a float8 in order to use the operator.

I don't think that

    select 2 ^ 100;

should emit the same warning.


Jan

--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== [EMAIL PROTECTED] #

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
     joining column's datatypes do not match

Reply via email to