[BUGS] Patch for Bug#1611 -
04-28-2005
, 12:19 PM
--------------Boundary-00=_WKYN6510GA60IQ30IS10
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
My patch once more, based on 'postgresql-jdbc-8.0-311.src.tar.gz'.
(Sorry, my last version of this patch made a NullPointerException!) Using t=
his=20
patch, I still have not found any more problems with my application.
With kind regards,
Ingolf.
--------------Boundary-00=_WKYN6510GA60IQ30IS10
Content-Type: text/x-diff;
charset="us-ascii";
name="bug1611.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="bug1611.diff"
diff -cr postgresql-jdbc-8.0-311.src/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java postgresql-jdbc-8.0-311.src.patched/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
*** postgresql-jdbc-8.0-311.src/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java Wed Mar 23 20:48:17 2005
--- postgresql-jdbc-8.0-311.src.patched/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java Thu Apr 28 17:44:06 2005
***************
*** 23,28 ****
--- 23,29 ----
import java.util.StringTokenizer;
import java.util.Vector;
import java.util.GregorianCalendar;
+ import java.util.Calendar;
import org.postgresql.Driver;
import org.postgresql.core.*;
import org.postgresql.largeobject.*;
***************
*** 2088,2094 ****
this.checkResultSet(columnIndex);
if (calendar == null)
calendar = new GregorianCalendar();
! return TimestampUtils.toTimestamp(calendar, getString(columnIndex));
}
public InputStream getAsciiStream(int columnIndex) throws SQLException
--- 2089,2107 ----
this.checkResultSet(columnIndex);
if (calendar == null)
calendar = new GregorianCalendar();
! Timestamp ts = TimestampUtils.toTimestamp(calendar, getString(columnIndex));
! if (null!=ts && java.sql.Types.DATE==getMetaData().getColumnType(c olumnIndex) )
! {
! Calendar cal = Calendar.getInstance();
! cal.setTime(ts);
! cal.set(Calendar.HOUR,0);
! cal.set(Calendar.HOUR_OF_DAY,0);
! cal.set(Calendar.MINUTE,0);
! cal.set(Calendar.SECOND,0);
! cal.set(Calendar.MILLISECOND,0);
! ts.setTime(cal.getTimeInMillis());
! }
! return ts;
}
public InputStream getAsciiStream(int columnIndex) throws SQLException
diff -cr postgresql-jdbc-8.0-311.src/org/postgresql/test/jdbc2/ResultSetTest.java postgresql-jdbc-8.0-311.src.patched/org/postgresql/test/jdbc2/ResultSetTest.java
*** postgresql-jdbc-8.0-311.src/org/postgresql/test/jdbc2/ResultSetTest.java Tue Jan 11 09:25:48 2005
--- postgresql-jdbc-8.0-311.src.patched/org/postgresql/test/jdbc2/ResultSetTest.java Thu Apr 28 17:44:06 2005
***************
*** 46,51 ****
--- 46,59 ----
TestUtil.createTable(con, "teststring", "a text");
stmt.executeUpdate("INSERT INTO teststring VALUES ('12345')");
+ TestUtil.createTable(con, "testdate", "d date");
+ stmt.executeUpdate("INSERT INTO testdate VALUES (CURRENT_DATE)");
+ stmt.executeUpdate("INSERT INTO testdate VALUES ( null )");
+
+ TestUtil.createTable(con, "testtimestamp", "d timestamp");
+ stmt.executeUpdate("INSERT INTO testtimestamp VALUES (CURRENT_DATE)");
+ stmt.executeUpdate("INSERT INTO testtimestamp VALUES ( null )");
+
TestUtil.createTable(con, "testint", "a int");
stmt.executeUpdate("INSERT INTO testint VALUES (12345)");
***************
*** 103,108 ****
--- 111,118 ----
{
TestUtil.dropTable(con, "testrs");
TestUtil.dropTable(con, "teststring");
+ TestUtil.dropTable(con, "testdate");
+ TestUtil.dropTable(con, "testtimestamp");
TestUtil.dropTable(con, "testint");
TestUtil.dropTable(con, "testbool");
//TestUtil.dropTable(con, "testbit");
***************
*** 178,183 ****
--- 188,233 ----
rs.next();
assertEquals("12", rs.getString(1));
assertEquals("12", new String(rs.getBytes(1)));
+ }
+
+ public void testDate() throws SQLException
+ {
+ Statement stmt = con.createStatement();
+ stmt.setMaxFieldSize(2);
+
+ ResultSet rs = stmt.executeQuery("select * from testdate");
+
+ //independent of how current date is read, it should be a
+ //date and not a timestamp
+ while ( rs.next() )
+ {
+ java.sql.Date dtVal = rs.getDate(1);
+ java.sql.Timestamp tsVal = rs.getTimestamp(1);
+ if ( null == dtVal )
+ assertNull("date is null, timestamp should be null", tsVal);
+ else
+ assertEquals("date should stay a date even when it is read by 'getTimestamp()'", dtVal.getTime(), tsVal.getTime());
+ }
+ }
+
+ public void testDateTimestamp() throws SQLException
+ {
+ Statement stmt = con.createStatement();
+ stmt.setMaxFieldSize(2);
+
+ ResultSet rs = stmt.executeQuery("select * from testtimestamp");
+
+ //independent of how current date is read, it should be a
+ //date and not a timestamp
+ while ( rs.next() )
+ {
+ java.sql.Date dtVal = rs.getDate(1);
+ java.sql.Timestamp tsVal = rs.getTimestamp(1);
+ if ( null == dtVal )
+ assertNull("date is null, timestamp should be null", tsVal);
+ else
+ assertEquals("I stored a date, and I want to get a date", dtVal.getTime(), tsVal.getTime());
+ }
}
public void booleanTests(boolean useServerPrepare) throws SQLException
--------------Boundary-00=_WKYN6510GA60IQ30IS10
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo (AT) postgresql (DOT) org so that your
message can get through to the mailing list cleanly
--------------Boundary-00=_WKYN6510GA60IQ30IS10-- |