>X-Sieve: cmu-sieve 2.0 >From: "Alex Cholokov" <[EMAIL PROTECTED]> >To: <[EMAIL PROTECTED]> >Subject: Bug in getTimestamp() of PostgreSQL JDBC driver? >Date: Wed, 6 Mar 2002 15:48:20 +0700 >X-Mailer: Microsoft Outlook, Build 10.0.2627 >Importance: Normal > >Hello Peter, > >I have problem with JDBC driver for PostgreSQL >When i call getTimeStamp() method of ResultSet it gave me : >====================================================================== >[14:38:15,755,Default] java.lang.StringIndexOutOfBoundsException: String >index out of range: 23 >[14:38:15,755,Default] at java.lang.String.charAt(String.java:507) >[14:38:15,765,Default] >[14:38:15,765,Default] at >org.postgresql.jdbc2.ResultSet.toTimestamp(ResultSet.java:1656) >[14:38:15,765,Default] >[14:38:15,765,Default] at >org.postgresql.jdbc2.ResultSet.getTimestamp(ResultSet.java:398) >[14:38:15,765,Default] >[14:38:15,765,Default] at >org.postgresql.jdbc2.ResultSet.getTimestamp(ResultSet.java:617) >[14:38:15,765,Default] >[14:38:15,765,Default] at >org.jboss.pool.jdbc.ResultSetInPool.getTimestamp(Unknown Source) >[14:38:15,765,Default] >[14:38:15,765,Default] at org.peoplink.ejb.SyncEJB.getkeys(SyncEJB.java:902) >[14:38:15,765,Default] >[14:38:15,765,Default] at org.peoplink.ejb.SyncEJB.invoke(SyncEJB.java:150) >[14:38:15,765,Default] >[14:38:15,765,Default] at java.lang.reflect.Method.invoke(Native Method) >[14:38:15,775,Default] >[14:38:15,775,Default] at >org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.invoke(StatefulSessionContainer.java:664) >[14:38:15,775,Default] >[14:38:15,775,Default] at >org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:127) >[14:38:15,775,Default] >[14:38:15,775,Default] at >org.jboss.ejb.plugins.TxInterceptorBMT.invoke(TxInterceptorBMT.java:299) >[14:38:15,775,Default] >[14:38:15,775,Default] at >org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:242) >[14:38:15,775,Default] >[14:38:15,775,Default] at >org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:170) >[14:38:15,775,Default] >[14:38:15,775,Default] at >org.jboss.ejb.StatefulSessionContainer.invoke(StatefulSessionContainer.java:339) >[14:38:15,775,Default] >[14:38:15,775,Default] at >org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:410) >[14:38:15,785,Default] >[14:38:15,785,Default] at >org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:491) >[14:38:15,785,Default] >[14:38:15,785,Default] at >org.jboss.ejb.plugins.jrmp.interfaces.GenericProxy.invokeContainer(GenericProxy.java:335) >[14:38:15,785,Default] >[14:38:15,785,Default] at >org.jboss.ejb.plugins.jrmp.interfaces.StatefulSessionProxy.invoke(StatefulSessionProxy.java:136) >... >etc... >====================================================================== >i checked the date returned from backend it is '2002-03-06 >06:48:01.912' with total length 23. >So i had modified rows of org.postgresql.jdbc2.ResultSet.java (below row >1644) from: >====================================================================== > 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); > c = s.charAt(i++); > } while (Character.isDigit(c)); > > // If there wasn't at least 3 digits we should add some zeros > // to make up the 3 digits we tell java to expect. > for (int j = i; j < 24; j++) > resultSet.sbuf.append('0'); > } >====================================================================== >to >====================================================================== > int slen = s.length(); > char c = s.charAt(i++); > if (c == '.') > { > slen = ( slen < 23)? slen: 23; > // Found a fractional value. Append up to 3 digits including > // the leading '.' > do > { > resultSet.sbuf.append(c); > if( i < slen) > c = s.charAt(i++); > else > break; > } while (Character.isDigit(c)); > > // If there wasn't at least 3 digits we should add some zeros > // to make up the 3 digits we tell java to expect. > for (int j = i; j < 23; j++) > resultSet.sbuf.append('0'); > } >====================================================================== >and problem disappeared. > >I had used jdbc driver from postgresql-7.2.tar.gz and precompiled driver >from jdbc.postgresql.org - the same problem. > >Best regards, >Alexey. > >Page via e-mail (400 chars max): ><mailto:[EMAIL PROTECTED]>10304@<mailto:[EMAIL PROTECTED]>alel.rdtc.ru >Additional e-mail: ><mailto:[EMAIL PROTECTED]>[EMAIL PROTECTED] >MSN Messenger id: <mailto:[EMAIL PROTECTED]>[EMAIL PROTECTED] >Yahoo Messenger id: alexey_cholokov >ICQ: 7898280 >Phone: 7(3843)786085 > >
---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly