Re: ResultSetMetaData + CachedResultSet bug

From: Thomas Hallgren <thomas(at)tada(dot)se>
To: Kris Jurka <books(at)ejurka(dot)com>
Cc: Postgres-JDBC <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: ResultSetMetaData + CachedResultSet bug
Date: 2006-06-30 08:10:00
Message-ID: 44A4DC58.8030200@tada.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2006-06-30 16:23:10 Re: ResultSetMetaData + CachedResultSet bug
Previous Message Yukino Miyazawa 2006-06-30 00:47:14 Utilizing executeBatch() with stored procedures