Re: jdbc problem with time - Mailing list pgsql-jdbc
From | Laurette Cisneros |
---|---|
Subject | Re: jdbc problem with time |
Date | |
Msg-id | Pine.LNX.4.44.0207091409560.6150-100000@visor.corp.nextbus.com Whole thread Raw |
In response to | Re: jdbc problem with time (Barry Lind <barry@xythos.com>) |
List | pgsql-jdbc |
Yes, the bug still exists in the latest development driver. Thanks, L. On Tue, 9 Jul 2002, Barry Lind wrote: > Laurette, > > What version are you using? Can you still reproduce the problem with > the latest development drivers (which you can download from > jdbc.postgresql.org)? > > thanks, > --Barry > > Laurette Cisneros wrote: > > >Any ideas on this? > > > >We have a table: > > > >xyzzy=# select sched_id, tod_start, tod_end from schedule where sched_id=1; > > > > sched_id | tod_start | tod_end > >----------+-----------+--------------- > > 1 | 00:00:00 | 23:59:59.9990 > > > >Notice the millisecond values set for tod_end. The jdbc driver barfs when > >trying to read the time from the result set using the java code: > >Time t = rs.getTime("tod_end"); > > > >The stack trace from here looks like: > > > >java.lang.StringIndexOutOfBoundsException: String index out of range: 19 > >at java.lang.String.substring(String.java:1522) at > >org.postgresql.jdbc2.ResultSet.toTime(ResultSet.java:1586) at > >org.postgresql.jdbc2.ResultSet.getTime(ResultSet.java:385) at > >org.postgresql.jdbc2.ResultSet.getTime(ResultSet.java:612) at > >COM.NextBus.signad.SelectScheduleDetails.getObject(SelectScheduleDetails.java:30) > >at > > > >Here is the offending piece of code. It fails in the case where the time > >string looks like: "HH:MM:SS:mmmm". The code assumes that anything longer > >than 8 characters is a timestamp and tries to get a substring accordingly. > >However, the substring call fails, since this is a "time without time > >zone" and not an SQL timestamp. > > > >Here is the code: > > > >public static Time toTime(String s) throws SQLException > >{ > > if (s == null) > > return null; // SQL NULL > > // length == 8: SQL Time > > // length > 8: SQL Timestamp > > try > > { > > return java.sql.Time.valueOf((s.length() == 8) ? s : s.substring(11, 19)); > > } > > catch (NumberFormatException e) > > { > > throw new PSQLException("postgresql.res.badtime", s); > > } > >} > > > > > >Thanks for the help, > > > >--- > >Laurette Cisneros > >The Database Group > >(510) 420-3137 > >NextBus Information Systems, Inc. > >www.nextbus.com > >---------------------------------- > >"Intelligence complicates. Wisdom simplifies." > > -- Mason Cooley > > > > > >---------------------------(end of broadcast)--------------------------- > >TIP 2: you can get off all lists at once with the unregister command > > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > > > > > > > > -- Laurette Cisneros The Database Group (510) 420-3137 NextBus Information Systems, Inc. www.nextbus.com ---------------------------------- "Intelligence complicates. Wisdom simplifies." -- Mason Cooley
pgsql-jdbc by date: