JDBC timestamp does not understand [-]infinity

Started by Dmitry Tkachalmost 24 years ago3 messagesbugs
Jump to latest
#1Dmitry Tkach
dmitry@openratings.com

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
#2Bruce Momjian
bruce@momjian.us
In reply to: Dmitry Tkach (#1)
Re: JDBC timestamp does not understand [-]infinity

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?

http://www.postgresql.org/users-lounge/docs/faq.html

-- 
  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
#3Barry Lind
barry@xythos.com
In reply to: Dmitry Tkach (#1)
Re: [PATCHES] JDBC timestamp does not understand [-]infinity

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)