Re: ResultSetMetaData + CachedResultSet bug
От | Thomas Hallgren |
---|---|
Тема | Re: ResultSetMetaData + CachedResultSet bug |
Дата | |
Msg-id | 44A4DC58.8030200@tada.se обсуждение исходный текст |
Ответ на | Re: ResultSetMetaData + CachedResultSet bug (Kris Jurka <books@ejurka.com>) |
Ответы |
Re: ResultSetMetaData + CachedResultSet bug
Re: ResultSetMetaData + CachedResultSet bug |
Список | pgsql-jdbc |
Kris Jurka wrote: > > > On Thu, 22 Jun 2006, Sergii Sinelnychenko wrote: > >> Today I have found a strange bug in JDBC driver (I used the last >> version avilable - 8.2dev-503). The problem is with VARCHAR fields - >> driver returns "-1" on "getPrecision()" call. But class >> javax.sql.rowset.RowSetMetaDataImpl in its "setPrecision()" method >> requires values of 0 and more (javadoc sais "precision the total >> number of decimal digits; must be <code>0</code> or more "). >> I understand that in case of VARCHAR type we cannot speak about real >> number of decimal digits - but could just driver return 0 instead of -1? > > > That certainly looks like a reasonable thing to do for text types. The > one case that needs a little more thinking about is a numeric field that > has neither precision nor scale supplied. For this we currently return > -1 for both precision and scale. The maximum precision of a numeric is > 1000 digits, so we could divy it up evenly and make an unadorned numeric > be returned as numeric(1000,500), but that seems a little too much like > just making things up. Thoughts? > I think the current -1 is reasonable for non numeric types. For the numeric types however, the interpretation should be that 0 is unlimited. A numeric should never return -1 and should accept setPrecision(colidx, 0) as 'no limit', i.e. 0 = unlimited -1 = not applicable A setPrecision call on types where precision has no meaning should IMO yield an exception. The rationale is that a) stating that a varchar has zero decimal digits is wrong since it doesn't have any notion of decimal digits, and b) a precision of zero for a numeric doesn't make sense when interpreted verbatim. Regards, Thomas Hallgren
В списке pgsql-jdbc по дате отправления: