Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 66d0041

Browse files
author
Barry Lind
committed
Applied jdbc patch from Kim Ho at RedHat to improve boolean support, as well
as some additional regression tests for this an other recent changes. Modified Files: jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java jdbc/org/postgresql/test/jdbc2/DateTest.java jdbc/org/postgresql/test/jdbc2/ResultSetTest.java jdbc/org/postgresql/test/jdbc2/TimeTest.java jdbc/org/postgresql/test/jdbc2/TimestampTest.java
1 parent f03d228 commit 66d0041

File tree

5 files changed

+699
-25
lines changed

5 files changed

+699
-25
lines changed

src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* Copyright (c) 2003, PostgreSQL Global Development Group
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1ResultSet.java,v 1.20 2003/09/18 04:09:02 barry Exp $
12+
* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1ResultSet.java,v 1.21 2003/09/22 04:54:59 barry Exp $
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
@@ -201,7 +201,11 @@ public byte getByte(int columnIndex) throws SQLException
201201
case Types.DOUBLE:
202202
case Types.FLOAT:
203203
case Types.DECIMAL:
204-
s = (s.indexOf(".")==-1) ? s : s.substring(0,s.indexOf("."));
204+
int loc = s.indexOf(".");
205+
if (loc!=-1 && Integer.parseInt(s.substring(loc+1,s.length()))==0)
206+
{
207+
s = s.substring(0,loc);
208+
}
205209
break;
206210
case Types.CHAR:
207211
s = s.trim();
@@ -232,7 +236,11 @@ public short getShort(int columnIndex) throws SQLException
232236
case Types.DOUBLE:
233237
case Types.FLOAT:
234238
case Types.DECIMAL:
235-
s = (s.indexOf(".")==-1) ? s : s.substring(0,s.indexOf("."));
239+
int loc = s.indexOf(".");
240+
if (loc!=-1 && Integer.parseInt(s.substring(loc+1,s.length()))==0)
241+
{
242+
s = s.substring(0,loc);
243+
}
236244
break;
237245
case Types.CHAR:
238246
s = s.trim();

src/interfaces/jdbc/org/postgresql/test/jdbc2/DateTest.java

+184-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.sql.*;
66

77
/*
8-
* $Id: DateTest.java,v 1.5 2002/08/14 20:35:40 barry Exp $
8+
* $Id: DateTest.java,v 1.6 2003/09/22 04:55:00 barry Exp $
99
*
1010
* Some simple tests based on problems reported by users. Hopefully these will
1111
* help prevent previous problems from re-occuring ;-)
@@ -15,6 +15,7 @@ public class DateTest extends TestCase
1515
{
1616

1717
private Connection con;
18+
private boolean testingSetDate = false;
1819

1920
public DateTest(String name)
2021
{
@@ -46,11 +47,23 @@ public void testGetDate()
4647
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1970-06-02'")));
4748
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1999-08-11'")));
4849
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'2001-02-13'")));
50+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1950-04-02'")));
51+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1970-11-30'")));
52+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1988-01-01'")));
53+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'2003-07-09'")));
54+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1934-02-28'")));
55+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1969-04-03'")));
56+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1982-08-03'")));
57+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'2012-03-15'")));
58+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1912-05-01'")));
59+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1971-12-15'")));
60+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'1984-12-03'")));
61+
assertEquals(1, stmt.executeUpdate(TestUtil.insertSQL("testdate", "'2000-01-01'")));
4962

5063
/* dateTest() contains all of the tests */
5164
dateTest();
5265

53-
assertEquals(4, stmt.executeUpdate("DELETE FROM " + "testdate"));
66+
assertEquals(16, stmt.executeUpdate("DELETE FROM " + "testdate"));
5467
stmt.close();
5568
}
5669
catch (Exception ex)
@@ -80,13 +93,64 @@ public void testSetDate()
8093

8194
ps.setDate(1, makeDate(2001, 2, 13));
8295
assertEquals(1, ps.executeUpdate());
83-
96+
97+
ps.setObject(1, java.sql.Timestamp.valueOf("1950-04-02 12:00:00"), java.sql.Types.DATE);
98+
assertEquals(1, ps.executeUpdate());
99+
100+
ps.setObject(1, java.sql.Timestamp.valueOf("1970-11-30 3:00:00"), java.sql.Types.DATE);
101+
assertEquals(1, ps.executeUpdate());
102+
103+
ps.setObject(1, java.sql.Timestamp.valueOf("1988-1-1 13:00:00"), java.sql.Types.DATE);
104+
assertEquals(1, ps.executeUpdate());
105+
106+
ps.setObject(1, java.sql.Timestamp.valueOf("2003-07-09 12:00:00"), java.sql.Types.DATE);
107+
assertEquals(1, ps.executeUpdate());
108+
109+
ps.setObject(1, "1934-02-28", java.sql.Types.DATE);
110+
assertEquals(1, ps.executeUpdate());
111+
112+
ps.setObject(1, "1969-04-3", java.sql.Types.DATE);
113+
assertEquals(1, ps.executeUpdate());
114+
115+
ps.setObject(1, "1982-08-03", java.sql.Types.DATE);
116+
assertEquals(1, ps.executeUpdate());
117+
118+
ps.setObject(1, "2012-3-15", java.sql.Types.DATE);
119+
assertEquals(1, ps.executeUpdate());
120+
121+
ps.setObject(1, java.sql.Date.valueOf("1912-5-1"), java.sql.Types.DATE);
122+
assertEquals(1, ps.executeUpdate());
123+
124+
ps.setObject(1, java.sql.Date.valueOf("1971-12-15"), java.sql.Types.DATE);
125+
assertEquals(1, ps.executeUpdate());
126+
127+
ps.setObject(1, java.sql.Date.valueOf("1984-12-03"), java.sql.Types.DATE);
128+
assertEquals(1, ps.executeUpdate());
129+
130+
ps.setObject(1, java.sql.Date.valueOf("2000-1-1"), java.sql.Types.DATE);
131+
assertEquals(1, ps.executeUpdate());
132+
133+
ps.setObject(1, "1944-4-04-01", java.sql.Types.DATE);
134+
assertEquals(1, ps.executeUpdate());
135+
136+
ps.setObject(1, "1970-01-1-10", java.sql.Types.DATE);
137+
assertEquals(1, ps.executeUpdate());
138+
139+
ps.setObject(1, "1982-12-14+13", java.sql.Types.DATE);
140+
assertEquals(1, ps.executeUpdate());
141+
142+
ps.setObject(1, "2010-08-3+05", java.sql.Types.DATE);
143+
assertEquals(1, ps.executeUpdate());
144+
84145
ps.close();
85146

147+
// Need to set a flag so that the method knows there is an extra test.
148+
testingSetDate = true;
86149
// Fall through helper
87150
dateTest();
151+
testingSetDate = false;
88152

89-
assertEquals(4, stmt.executeUpdate("DELETE FROM testdate"));
153+
assertEquals(20, stmt.executeUpdate("DELETE FROM testdate"));
90154
stmt.close();
91155
}
92156
catch (Exception ex)
@@ -127,6 +191,122 @@ private void dateTest() throws SQLException
127191
assertNotNull(d);
128192
assertEquals(d, makeDate(2001, 2, 13));
129193

194+
assertTrue(rs.next());
195+
d = rs.getDate(1);
196+
assertNotNull(d);
197+
assertEquals(d, makeDate(1950, 4, 2));
198+
199+
assertTrue(rs.next());
200+
d = rs.getDate(1);
201+
assertNotNull(d);
202+
assertEquals(d, makeDate(1970, 11, 30));
203+
204+
assertTrue(rs.next());
205+
d = rs.getDate(1);
206+
assertNotNull(d);
207+
assertEquals(d, makeDate(1988, 1, 1));
208+
209+
assertTrue(rs.next());
210+
d = rs.getDate(1);
211+
assertNotNull(d);
212+
assertEquals(d, makeDate(2003, 7, 9));
213+
214+
assertTrue(rs.next());
215+
d = rs.getDate(1);
216+
assertNotNull(d);
217+
assertEquals(d, makeDate(1934, 2, 28));
218+
219+
assertTrue(rs.next());
220+
d = rs.getDate(1);
221+
assertNotNull(d);
222+
assertEquals(d, makeDate(1969, 4, 3));
223+
224+
assertTrue(rs.next());
225+
d = rs.getDate(1);
226+
assertNotNull(d);
227+
assertEquals(d, makeDate(1982, 8, 3));
228+
229+
assertTrue(rs.next());
230+
d = rs.getDate(1);
231+
assertNotNull(d);
232+
assertEquals(d, makeDate(2012, 3, 15));
233+
234+
assertTrue(rs.next());
235+
d = rs.getDate(1);
236+
assertNotNull(d);
237+
assertEquals(d, makeDate(1912, 5, 1));
238+
239+
assertTrue(rs.next());
240+
d = rs.getDate(1);
241+
assertNotNull(d);
242+
assertEquals(d, makeDate(1971, 12, 15));
243+
244+
assertTrue(rs.next());
245+
d = rs.getDate(1);
246+
assertNotNull(d);
247+
assertEquals(d, makeDate(1984, 12, 3));
248+
249+
assertTrue(rs.next());
250+
d = rs.getDate(1);
251+
assertNotNull(d);
252+
assertEquals(d, makeDate(2000, 1, 1));
253+
254+
//now we have to convert the date, cause I fed it a timezone. IF it used it. hence the check
255+
if (testingSetDate)
256+
{
257+
assertTrue(rs.next());
258+
d = rs.getDate(1);
259+
assertNotNull(d);
260+
java.sql.Date tmpDate = java.sql.Date.valueOf("1944-4-4");
261+
int localoffset = java.util.Calendar.getInstance().getTimeZone().getRawOffset();
262+
if (java.util.Calendar.getInstance().getTimeZone().inDaylightTime(tmpDate))
263+
{
264+
localoffset += 60 * 60 * 1000;
265+
}
266+
int Dateoffset = 60 * 60 * 1000;
267+
tmpDate.setTime(tmpDate.getTime() + Dateoffset + localoffset);
268+
assertEquals(d, makeDate(tmpDate.getYear() + 1900, tmpDate.getMonth()+1, tmpDate.getDate()));
269+
270+
assertTrue(rs.next());
271+
d = rs.getDate(1);
272+
assertNotNull(d);
273+
tmpDate = java.sql.Date.valueOf("1970-1-1");
274+
localoffset = java.util.Calendar.getInstance().getTimeZone().getRawOffset();
275+
if (java.util.Calendar.getInstance().getTimeZone().inDaylightTime(tmpDate))
276+
{
277+
localoffset += 60 * 60 * 1000;
278+
}
279+
Dateoffset = 10 * 60 * 60 * 1000;
280+
tmpDate.setTime(tmpDate.getTime() + Dateoffset + localoffset);
281+
assertEquals(d, makeDate(tmpDate.getYear() + 1900, tmpDate.getMonth()+1, tmpDate.getDate()));
282+
283+
assertTrue(rs.next());
284+
d = rs.getDate(1);
285+
assertNotNull(d);
286+
tmpDate = java.sql.Date.valueOf("1982-12-14");
287+
localoffset = java.util.Calendar.getInstance().getTimeZone().getRawOffset();
288+
if (java.util.Calendar.getInstance().getTimeZone().inDaylightTime(tmpDate))
289+
{
290+
localoffset += 60 * 60 * 1000;
291+
}
292+
Dateoffset = -13 * 60 * 60 * 1000;
293+
tmpDate.setTime(tmpDate.getTime() + Dateoffset + localoffset);
294+
assertEquals(d, makeDate(tmpDate.getYear() + 1900, tmpDate.getMonth()+1, tmpDate.getDate()));
295+
296+
assertTrue(rs.next());
297+
d = rs.getDate(1);
298+
assertNotNull(d);
299+
tmpDate = java.sql.Date.valueOf("2010-08-03");
300+
localoffset = java.util.Calendar.getInstance().getTimeZone().getRawOffset();
301+
if (java.util.Calendar.getInstance().getTimeZone().inDaylightTime(tmpDate))
302+
{
303+
localoffset += 60 * 60 * 1000;
304+
}
305+
Dateoffset = -5 * 60 * 60 * 1000;
306+
tmpDate.setTime(tmpDate.getTime() + Dateoffset + localoffset);
307+
assertEquals(d, makeDate(tmpDate.getYear() + 1900, tmpDate.getMonth()+1, tmpDate.getDate()));
308+
}
309+
130310
assertTrue(!rs.next());
131311

132312
rs.close();

0 commit comments

Comments
 (0)