Re: Fixed length data types issue - Mailing list pgsql-hackers

From mark@mark.mielke.cc
Subject Re: Fixed length data types issue
Date
Msg-id 20060911235129.GA25508@mark.mielke.cc
Whole thread Raw
In response to Re: Fixed length data types issue  (Gregory Stark <gsstark@mit.edu>)
List pgsql-hackers
On Mon, Sep 11, 2006 at 07:05:12PM -0400, Gregory Stark wrote:
> Tom Lane <tgl@sss.pgh.pa.us> writes:
> > Gregory Stark <stark@enterprisedb.com> writes:
> > > At first I meant that as a reductio ad absurdum argument, but, uh,
> > > come to think of it why *do* we have our own arbitrary precision
> > > library? Is there any particular reason we can't use one of the
> > > existing binary implementations?
> > Going over to binary storage would trade off I/O speed for calculation
> > speed, which is probably not a win for everyone; 
> Huh? Which would you expect binary to be worse at than decimal? I
> would expect it to be both faster and denser.

Representation is the difficult part.

> > and even more seriously, how are you going to represent decimal fractions
> > exactly? The fact that 0.01 is 0.01 and not just a near approximation
> > thereto is critical for a lot of our users.
> Certainly any arbitrary precision library isn't worth beans if it can't
> represent values accurately.

This isn't correct. Try representing 0.01 "accurately" in binary. See what
you come up with. :-)

> I'm not sure how gmp and the others represent their data but my
> first guess is that there's no particular reason the base of the
> mantissa and exponent have to be the same as the base the exponent
> is interpreted as. That is, you can store a base 10 exponent but
> store it and the mantissa in two's complement integers.

I don't think gmp does this, nor do I expect it would be trivial to
author a package that was both efficient, and could operate in any
base. I believe gmp operates in a base that is the size of the CPU
word, usually 32-bits or 64-bits. It does not offer ability to
calculate or store using base 10.

I've seen libraries that do an acceptable job storing items in base
1000 or higher for use in decimal calculations. I have no idea what
PostgreSQL itself does... :-)

Cheers,
mark

-- 
mark@mielke.cc / markm@ncf.ca / markm@nortel.com     __________________________
.  .  _  ._  . .   .__    .  . ._. .__ .   . . .__  | Neighbourhood Coder
|\/| |_| |_| |/    |_     |\/|  |  |_  |   |/  |_   | 
|  | | | | \ | \   |__ .  |  | .|. |__ |__ | \ |__  | Ottawa, Ontario, Canada
 One ring to rule them all, one ring to find them, one ring to bring them all                      and in the darkness
bindthem...
 
                          http://mark.mielke.cc/



pgsql-hackers by date:

Previous
From: Gregory Stark
Date:
Subject: Re: Fixed length data types issue
Next
From: Tom Lane
Date:
Subject: pgbench is badly broken since July