JDBC timestamp does not understand [-]infinity
The attached patch fixes 'Bad Timestamp format' exception when timestamp value is 'ininity' or '-ininity'.
I hope, it helps...
Dima.
Attachments:
AbstractJdbc1ResultSet.patchtext/plain; name=AbstractJdbc1ResultSet.patchDownload+11-1
This code doesn't exist in the jdbc driver anymore. They must have
already fixed it.
---------------------------------------------------------------------------
Dmitry Tkach wrote:
The attached patch fixes 'Bad Timestamp format' exception when timestamp value is 'ininity' or '-ininity'.
I hope, it helps...
Dima.
Index: AbstractJdbc1ResultSet.java =================================================================== RCS file: /projects/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java,v retrieving revision 1.1 diff -p -r1.1 AbstractJdbc1ResultSet.java *** AbstractJdbc1ResultSet.java 2002/07/23 03:59:55 1.1 --- AbstractJdbc1ResultSet.java 2002/07/23 16:58:00 *************** public abstract class AbstractJdbc1Resul *** 40,46 **** --- 40,50 ---- protected StringBuffer sbuf = null; public byte[][] rowBuffer=null;+ public static final String MIN_DATE_STR = "0000-01-01"; + public static final String MAX_DATE_STR = "9999-12-31"; ++
public AbstractJdbc1ResultSet(org.postgresql.PGConnection conn, Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor)
{
this.connection = conn;
*************** public abstract class AbstractJdbc1Resul
*** 853,861 ****
else
rs.sbuf.setLength(0);// Copy s into sbuf for parsing.
rs.sbuf.append(s);
- int slen = s.length();if (slen > 19) { --- 857,871 ---- else rs.sbuf.setLength(0);+ int slen = s.length(); + + if (slen == 8 && s.equals ("infinity")) + s = MAX_DATE_STR; + else if (slen == 9 && s.equals ("-infinity")) + s = MIN_DATE_STR; + // Copy s into sbuf for parsing. rs.sbuf.append(s);if (slen > 19)
{
---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
A modified version of this patch has been applied.
--Barry
Dmitry Tkach wrote:
Show quoted text
The attached patch fixes 'Bad Timestamp format' exception when
timestamp value is 'ininity' or '-ininity'.
I hope, it helps...
Dima.------------------------------------------------------------------------
Index: AbstractJdbc1ResultSet.java =================================================================== RCS file: /projects/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java,v retrieving revision 1.1 diff -p -r1.1 AbstractJdbc1ResultSet.java *** AbstractJdbc1ResultSet.java 2002/07/23 03:59:55 1.1 --- AbstractJdbc1ResultSet.java 2002/07/23 16:58:00 *************** public abstract class AbstractJdbc1Resul *** 40,46 **** --- 40,50 ---- protected StringBuffer sbuf = null; public byte[][] rowBuffer=null;+ public static final String MIN_DATE_STR = "0000-01-01"; + public static final String MAX_DATE_STR = "9999-12-31"; ++
public AbstractJdbc1ResultSet(org.postgresql.PGConnection conn, Field[] fields, Vector tuples, String status, int updateCount, long insertOID, boolean binaryCursor)
{
this.connection = conn;
*************** public abstract class AbstractJdbc1Resul
*** 853,861 ****
else
rs.sbuf.setLength(0);// Copy s into sbuf for parsing.
rs.sbuf.append(s);
- int slen = s.length();if (slen > 19) { --- 857,871 ---- else rs.sbuf.setLength(0);+ int slen = s.length(); + + if (slen == 8 && s.equals ("infinity")) + s = MAX_DATE_STR; + else if (slen == 9 && s.equals ("-infinity")) + s = MIN_DATE_STR; + // Copy s into sbuf for parsing. rs.sbuf.append(s);if (slen > 19)
{------------------------------------------------------------------------
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)