Skip site navigation (1) Skip section navigation (2)

Re: [PATCHES] patch for ResultSet.java

From: Barry Lind <barry(at)xythos(dot)com>
To: Alexander Litvinov <lan(at)ac-sw(dot)com>
Cc: pgsql-patches(at)postgresql(dot)org, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: [PATCHES] patch for ResultSet.java
Date: 2002-04-19 16:43:44
Message-ID: 3CC04940.9090209@xythos.com (view raw or flat)
Thread:
Lists: pgsql-jdbcpgsql-patches
Alexander,

Can you describe the problem you are having a little better.  I don't 
understand why you are getting "1903-12-29 18:00:12.68", you should be 
getting something like "1903-12-29 18:00:12.68+05"  (i.e. the timezone 
offset should be returned by the server.  What is the datatype of the 
column you are selecting from?

I need to better understand the cause of the problem so I can understand 
the correctness of your patch.

thanks,
--Barry



Alexander Litvinov wrote:
> If I try to fetch timestamp using rs,getTimestamp("name") I got:
> 
> java.lang.StringIndexOutOfBoundsException: String index out of range: 22
>         at java.lang.String.charAt(String.java(Compiled Code))
>         at org.postgresql.jdbc2.ResultSet.toTimestamp(ResultSet.java:1653)
>         at org.postgresql.jdbc2.ResultSet.getTimestamp(ResultSet.java:398)
>         at org.postgresql.jdbc2.ResultSet.getTimestamp(ResultSet.java:617)
> 
> Later I tried to do rs.getString("name") I got: "1903-12-29 18:00:12.68"
> 
> Using PostgreSQL v7.1.3 (JDBC from 7.2.1)
> 
> I have added some bounds check to ResultSet.java. See attached patch.
> 
> 
> ------------------------------------------------------------------------
> 
> --- src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java.original	Thu Apr 18 22:48:40 2002
> +++ src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java	Thu Apr 18 22:57:44 2002
> @@ -1641,17 +1641,22 @@
>  				int i = 19;
>  				resultSet.sbuf.setLength(i);
>  
> -				char c = s.charAt(i++);
> +				char c = s.charAt(i);
>  				if (c == '.')
>  				{
>  					// Found a fractional value. Append up to 3 digits including
>  					// the leading '.'
> -					do
> -					{
> -						if (i < 24)
> +					resultSet.sbuf.append(c);
> +					i++;
> +					while (i < s.length() && i < 24) {
> +						c = s.charAt(i);
> +						if (Character.isDigit(c)) {
>  							resultSet.sbuf.append(c);
> -						c = s.charAt(i++);
> -					} while (Character.isDigit(c));
> +							i++;
> +						}
> +						else
> +						    break;
> +					}
>  
>  					// If there wasn't at least 3 digits we should add some zeros
>  					// to make up the 3 digits we tell java to expect.
> @@ -1667,7 +1672,7 @@
>  				// prepend the GMT part and then add the remaining bit of
>  				// the string.
>  				resultSet.sbuf.append(" GMT");
> -				resultSet.sbuf.append(c);
> +//				resultSet.sbuf.append(c);
>  				resultSet.sbuf.append(s.substring(i, s.length()));
>  
>  				// Lastly, if the tz part doesn't specify the :MM part then
> 
> 
> ------------------------------------------------------------------------
> 
> 
> ---------------------------(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



In response to

Responses

pgsql-patches by date

Next:From: Tom LaneDate: 2002-04-19 16:57:49
Subject: Re: Odd(?) RI-trigger behavior
Previous:From: Nigel J. AndrewsDate: 2002-04-19 12:14:13
Subject: Re: Alter/update large tables - VERRRY annoying behaviour!

pgsql-jdbc by date

Next:From: Anders BengtssonDate: 2002-04-19 16:49:05
Subject: Re: BLOB performance test FYI
Previous:From: Tim PizeyDate: 2002-04-19 16:31:12
Subject: Melati 0.6.0 Released

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group