From: | Prasanth <dbadmin(at)nqadmin(dot)com> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | getDate after call to updateDate |
Date: | 2006-01-16 22:13:10 |
Message-ID: | 43CC1A76.1050402@nqadmin.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
But when I use the latest 8.1-404 or even 8.2dev jdbc3 drivers I am
observing a strange result.
When I update a date in the resultset (say with 12/31/2005) and then
call getDate it returns a date which is one day behind the value I have
set (returns 12/30/2005).
But it updates the database with the right date (12/31/2005). If I re
fetch the same row then I can see the right value.
I am running 7.4.7 version.
Below if the code to reproduce the error.
import java.sql.*;
import java.util.Calendar;
public class PostgresDate {
public static void main(String[] args) throws Exception {
Class.forName("org.postgresql.Driver");
Connection conn =
DriverManager.getConnection("jdbc:postgresql://databases.nqadmin.com:5432/test_server",
"postgres", "opelgt");
Statement stmt =
conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
try {
stmt.executeUpdate("DROP TABLE testdate2");
} catch (SQLException e) {}
stmt.executeUpdate("CREATE TABLE testdate2(id int4 primary key,
d date)");
stmt.executeUpdate("INSERT INTO testdate2(id, d) VALUES
(1,'2005-02-10')");
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH, 1);
c.set(Calendar.DATE, 2);
c.set(Calendar.YEAR, 2005);
Date d = new Date(c.getTimeInMillis());
ResultSet rs = stmt.executeQuery("SELECT * FROM testdate2");
rs.next();
rs.updateDate("d", d);
rs.updateRow();
d = rs.getDate("d");
System.out.println("Got date: " + d);
rs = stmt.executeQuery("SELECT * FROM testdate2");
rs.next();
d = rs.getDate("d");
System.out.println("Date after refresh: " + d);
rs.close();
stmt.close();
conn.close();
}
}
Thanks,
-Prasanth.
Prasanth wrote:
>Hi Oliver,
>
>Thank you very much.
>
>-Prasanth.
>
>Oliver Jowett wrote:
>
>
>>Prasanth wrote:
>>
>>
>>
>>
>>>Below if the code with result set to reproduce the problem.
>>>
>>>
>>As a workaround for the -310 driver, call refreshRow() after updateRow()
>>and you should be able to retrieve values correctly.
>>
>>-O
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 9: In versions below 8.0, the planner will ignore your desire to
>> choose an index scan if your joining column's datatypes do not
>> match
>>
>>
>>
>>
>
>---------------------------(end of broadcast)---------------------------
>TIP 2: Don't 'kill -9' the postmaster
>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Jowett | 2006-01-16 22:36:54 | Re: getDate after call to updateDate |
Previous Message | Kris Jurka | 2006-01-16 21:54:53 | Re: reading an oidvector field error |