PreparedStatement rounds doubles to scale 14 during update
От
Peter Kovacs
Тема
PreparedStatement rounds doubles to scale 14 during update
Дата
Msg-id
b6e8f2e80709050227r420d7a3cx751f819fba658854@mail.gmail.com
Список
Дерево обсуждения
PreparedStatement rounds doubles to scale 14 during update "Peter Kovacs" <maxottovonstirlitz@gmail.com>
Re: PreparedStatement rounds doubles to scale 14 during update "Heikki Linnakangas" <heikki@enterprisedb.com>
Re: PreparedStatement rounds doubles to scale 14 during update "Peter Kovacs" <maxottovonstirlitz@gmail.com>
Re: PreparedStatement rounds doubles to scale 14 during update "Heikki Linnakangas" <heikki@enterprisedb.com>
Re: PreparedStatement rounds doubles to scale 14 during update "Peter Kovacs" <maxottovonstirlitz@gmail.com>
Re: PreparedStatement rounds doubles to scale 14 during update Oliver Jowett <oliver@opencloud.com>
Re: PreparedStatement rounds doubles to scale 14 during update Dave Cramer <pg@fastcrypt.com>
Re: PreparedStatement rounds doubles to scale 14 during update Richard Broersma Jr <rabroersma@yahoo.com>
Re: PreparedStatement rounds doubles to scale 14 during update "Peter Kovacs" <maxottovonstirlitz@gmail.com>
Re: PreparedStatement rounds doubles to scale 14 during update "Heikki Linnakangas" <heikki@enterprisedb.com>
Re: PreparedStatement rounds doubles to scale 14 during update Kris Jurka <books@ejurka.com>
Re: PreparedStatement rounds doubles to scale 14 during update Tom Lane <tgl@sss.pgh.pa.us>
Re: PreparedStatement rounds doubles to scale 14 during update Kris Jurka <books@ejurka.com>
Hi,
I have the following problem with postgresql-8.1-407.jdbc3.jar used
against a 8.1 version backend.
A table "chemterms_cols_test" has a column "logp" defined as:
logp numeric(30,17)
The double value 6.118992224252588 gets rounded to 6.11899222425259000
during updates with PreparedStatements using place-holder. (There is
no rounding with Statement and the value specified in the SQL
literally.) Is this the expected behaviour?
Below is the code that can be used to test this behaviour ("cd_id" is
the primary key):
public static void main(String[] args) {
try {
Connection conn = DBTools.getConnectionHandler().getConnection();
conn.setAutoCommit(false);
int cdId = 1;
double dblValue = 6.118992224252588;
String sql =
"update chemterms_cols_test set logp = ? where cd_id = ?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
try {
pstmt.setDouble(1, dblValue);
pstmt.setInt(2, 1);
pstmt.executeUpdate();
conn.commit();
} finally {
pstmt.close();
}
ResultSet rs = null;
sql = "select logp from chemterms_cols_test where cd_id = ?";
pstmt = conn.prepareStatement(sql);
try {
pstmt.setInt(1, 1);
rs = pstmt.executeQuery();
rs.next();
double actual = rs.getDouble(1);
System.out.println("actual=" + actual + ", expected="
+ dblValue + ", equals? : " + (actual == dblValue));
} finally {
try {
if (rs != null) {
rs.close();
}
} finally {
pstmt.close();
}
}
} finally {
conn.close();
}
} catch (Throwable tbl) {
tbl.printStackTrace();
System.exit(1);
}
}
Thanks
Peter
В списке pgsql-jdbc по дате отправления
От: Heikki Linnakangas
Дата: