Comparing Numeric and Double Precision (float8)..

Lists: pgsql-sql
From: Terry Yapt <pgsql(at)technovell(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Comparing Numeric and Double Precision (float8)..
Date: 2002-11-04 08:11:30
Message-ID: 3DC62BB2.72FC66C8@technovell.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

Hello all,

i DON'T know what is the proper forum to throw this question and I must
to insist in this "feature". Sorry.

I have a lot of tables from Oracle 8i Databases with a lot of columns
with numeric(x,0) definition.

Ok.. I am traslating my oracle tables to PostgreSQL tables. But I am
having a serious problem with my client aplications.

When I compare a numeric(x,0) field with a float8 field I have an error
on PostgreSQL what I didn't have with Oracle. I mean:

CREATE test (one numeric(2,0));

SELECT * FROM test WHERE one = 1.00000;

This runs fine on my Oracle Systems.. but I have problems with my
PostgreSQL system. I have tried to create an operator to workaround
this inconvenience:

numeric '=' float8
with CREATE OPERATOR command and calling to a function to return a
boolean.

Ok.. great.. It is running now. But when it runs.. I have another
problems comparing numeric with integers and so on. So I must to DROP
OPERATOR......

I don't understand what is the problem and what options I have to
workaround it (without re-write a lot of client applications).

I have a lot of code I don't want to modify. The question is:

Why we cannot compare numeric with double precision ? And why Oracle or
SQL can do it without problems ?

Thanks a lot.


From: Bruno Wolff III <bruno(at)wolff(dot)to>
To: Terry Yapt <pgsql(at)technovell(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Comparing Numeric and Double Precision (float8)..
Date: 2002-11-04 13:45:15
Message-ID: 20021104134515.GA5617@wolff.to
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

On Mon, Nov 04, 2002 at 09:11:30 +0100,
Terry Yapt <pgsql(at)technovell(dot)com> wrote:
>
> When I compare a numeric(x,0) field with a float8 field I have an error
> on PostgreSQL what I didn't have with Oracle. I mean:
>
> CREATE test (one numeric(2,0));
>
> SELECT * FROM test WHERE one = 1.00000;

With 7.3b3 the above works after correcting the create statement.
bruno=> create table test (one numeric(2,0));
CREATE TABLE
bruno=> SELECT * FROM test WHERE one = 1.00000;
one
-----
(0 rows)


From: Terry Yapt <pgsql(at)technovell(dot)com>
To: Bruno Wolff III <bruno(at)wolff(dot)to>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Comparing Numeric and Double Precision (float8)..
Date: 2002-11-04 14:35:28
Message-ID: 3DC685B0.D92E88E3@technovell.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-sql

Great....

I don't know if my customers can wait until 7.3 official release, but
I'll try to distract them a bit... :-\

Thanks a lot Bruno...

Bruno Wolff III wrote:
>
> On Mon, Nov 04, 2002 at 09:11:30 +0100,
> Terry Yapt <pgsql(at)technovell(dot)com> wrote:
> >
> > When I compare a numeric(x,0) field with a float8 field I have an error
> > on PostgreSQL what I didn't have with Oracle. I mean:
> >
> > CREATE test (one numeric(2,0));
> >
> > SELECT * FROM test WHERE one = 1.00000;
>
> With 7.3b3 the above works after correcting the create statement.
> bruno=> create table test (one numeric(2,0));
> CREATE TABLE
> bruno=> SELECT * FROM test WHERE one = 1.00000;
> one
> -----
> (0 rows)