Re: 7.4 driver vs 8.2 driver - Mailing list pgsql-jdbc

From Heikki Linnakangas
Subject Re: 7.4 driver vs 8.2 driver
Date
Msg-id 461DE7C7.3070707@enterprisedb.com
Whole thread Raw
In response to 7.4 driver vs 8.2 driver  (ismo.tuononen@solenovo.fi)
List pgsql-jdbc
ismo.tuononen@solenovo.fi wrote:
> select trunc($1,2);
> and that $1 is binded to double precision
>
> works with pg74.216.jdbc3.jar driver but with postgresql-8.2-504.jdbc4.jar
> we get error:
>
> ERROR:  function round(double precision, integer) does not exist at
> character 26
> HINT:  No function matches the given name and argument types. You may need
> to add explicit type casts.
>
> to change all queries to:
> select
> trunc(to_number(to_char($1,'99999999999999.999999),'99999999999999.999999');
>
> is just stupid and takes very long time, because it must be done manually
> (queries are in reality much more complex)
>
> any ideas what to do?

You can use a cast: select trunc(($1)::numeric).

> I just don't understand why postgresql dont have trunc(double
> precision,int) when it have trunc(double precision),trunc(numeric) and
> trunc(numeric,int)

trunc(double precision, int) wouldn't make much sense. The value would
be given in base 2 floating point format, while the precision would be
given as a number of *decimal* places, IOW base 10. If you find that you
need to do that, you should reconsider the data types you use.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

pgsql-jdbc by date:

Previous
From: Kris Jurka
Date:
Subject: Re: scrollable result sets performance problems
Next
From: Konstantinos Agouros
Date:
Subject: PGInterval.getSeconds