BUG #1177: JDBC driver doesn't handle all dates correctly
От | PostgreSQL Bugs List |
---|---|
Тема | BUG #1177: JDBC driver doesn't handle all dates correctly |
Дата | |
Msg-id | 20040622121415.907C9CF49E0@www.postgresql.com обсуждение исходный текст |
Ответы |
Re: BUG #1177: JDBC driver doesn't handle all dates correctly
|
Список | pgsql-bugs |
The following bug has been logged online: Bug reference: 1177 Logged by: Jan Normann Nielsen Email address: spam@dubbekarl.dk PostgreSQL version: 7.4 Operating system: Linux (Insignificant) Description: JDBC driver doesn't handle all dates correctly Details: In AbstractJdbc1Statement.setDate(int parameterIndex, java.sql.Date x), the date 'x' is converted to a string by using x.toString() before being sent as a parameter to a SQL-query, i.e. an INSERT-statement. The JavaDocs specify that the result of this this toString method is the same as new java.text.SimpleDateFormat("yyyy-MM-dd").format(x) which, according to the documentation for SimpleDateFormat, will zero-pad the year if it is less than four digits. This can happen if a very strange date is chosen, which this case shows: java.sql.Date x = new java.sql.Date(Long.MAX_VALUE); System.out.println((int) x.toString().charAt(0)); This code will print '0'. Since x.toString() contains a null character, the JDBC driver fails to send it as part of a query to the database by throwing: java.sql.SQLException: ERROR: Unterminated quoted string at org.postgresql.core.QueryExecutor.executeV2(QueryExecutor.java:287) at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:104) at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:43) org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement. at java:517) org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement. at java:50) org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Stat at ement.java:273) if I e.g. try to perform an INSERT-statement. The problem may also be present with other types than java.sql.Date, I haven't checked the details. The error is present in all versions 7.2-7.4 of the JDBC driver as far as I can see.
В списке pgsql-bugs по дате отправления: