Re: [Jdbc-commits] JDBC and real values returned by Postgres

From: Olivier Bouiron <o(dot)bouiron(at)isc84(dot)org>
To: Oliver Jowett <oliver(at)opencloud(dot)com>
Cc: h(dot)henoch(at)isc84(dot)org, PostgreSQL - JDBC <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: [Jdbc-commits] JDBC and real values returned by Postgres
Date: 2010-04-28 07:45:11
Message-ID: 4BD7E787.8080703@isc84.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
Thanks, you resolved my problem!<br>
<br>
If it can help someone, this is how to do:<br>
<br>
<font color="#3366ff">&nbsp;&nbsp;&nbsp; public static void main( String[] args ) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; StringBuffer sb = new StringBuffer();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Properties props = new Properties();<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Connexion<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; props.setProperty( "user", "postgres" );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Connection _connexion = DriverManager.getConnection(
"jdbc:postgresql://127.0.0.1:5432/test", props );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Create and fill the table<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sb.append( "create temporary table test_oliv (val float);"
);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sb.append( "insert into test_oliv(val) values (1.8);" );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sb.append( "insert into test_oliv(val) values (1.8);" );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sb.append( "insert into test_oliv(val) values (1.8);" );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _connexion.prepareStatement( sb.toString() ).execute();<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Request<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ResultSet rs = _connexion.prepareStatement( "select
sum(val) as t from test_oliv;" ).executeQuery();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rs.next();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( "Before:" );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // <b>Responses from jdbc driver: not the same</b>
displayed by the basic psql editor of postgres.<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( "Value: " + rs.getFloat( "t" ) );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rs.close();<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </font><font color="#3366ff"><font color="#cc0000">_connexion.prepareStatement(
"SET extra_float_digits=0" ).execute();</font><br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rs = _connexion.prepareStatement( "select sum(val) as t
from test_oliv;" ).executeQuery();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rs.next();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( "After:" );<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // <b>Responses from jdbc driver: the same</b> displayed
by the basic psql editor of postgres.<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println( "Value: " + rs.getFloat( "t" ) );<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rs.close();<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _connexion.close();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch ( Exception e ) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; }<br>
</font><br>
Regards<br>
<br>
Olivier Bouiron<br>
<br>
Le 28/04/2010 02:04, Oliver Jowett a &eacute;crit&nbsp;:
<blockquote cite="mid:4BD77B70(dot)40603(at)opencloud(dot)com" type="cite">Olivier
Bouiron wrote:
<br>
<br>
<blockquote type="cite">Under the psql editor, when I want the sum of
these 3 rows, the answer is 5.4.
<br>
But, under Java using the JDBC connector, the answer is 5.399999
<br>
<br>
I tried to use an other connector (postgresql-8.2-510.jdbc4) and the
problem disapears.
<br>
</blockquote>
<br>
I'd guess that it is due to newer drivers setting extra_float_digits.
See <a class="moz-txt-link-freetext" href="http://archives.postgresql.org/pgsql-jdbc/2009-05/msg00077.php">http://archives.postgresql.org/pgsql-jdbc/2009-05/msg00077.php</a>
<br>
<br>
-O
<br>
<br>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Olivier Bouiron
Institut Sainte Catherine
1750, chemin du lavarin
84000 AVIGNON
Tel: 04.90.27.57.43
</pre>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 4.5 KB

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Paolo Ambrosio 2010-04-29 12:49:29 getSuperTables
Previous Message Tom Lane 2010-04-28 00:22:21 Re: Connection problems with jdbc