Kathey Marsden wrote:
Rick Hillegas wrote:

Hi Kathey,

My gut feeling is that changing this behavior could affect applications like ij which make formatting decisions based on the JDBC types of returned columns.
If you return the correct column type of the base type, then the formatting would be correct.

I agree, but I am not sure yet how significant that impact might be. I'd like translate it into exactly what JDBC calls will have different behavior in order to more accurately assess the risk in typical usage scenarios.

Certainly there are these changes for the ResultSet returned by getGeneratedKeys():

o getMetaData() would correspond to the ResultSetMetadata of the base table column and so will have different types, columnwidths etc, so formatting and other decisions based on this information may be affected.
Portable code would adjust accordingly to the correct width. This is what a tool would do.
o getObject() would return a different type and applications making casts based on the assumption it is a BigDecimal may see cast exceptions or other problematic behavior because of this assumption.
Or because you are returning a BigDecimal when someone is not expecting it, you also have problematic behavior. This fact is buried in the Derby docs currently.
o getString() would return a different String representation which might be problematic if a particular format was expected and parsed.
This would be bad user code if you depended on getString for a numeric value of any type to be consistent.

Would other ResultSet methods might be affected? For instance, would getInt(), getLong(), getShort() etc. all still work as they did before and return the same values?
Of course there is the other question still outstanding:
Why would these methods be effected, they have nothing to do with this.

What usage cases would *benefit* from changing it? This is important, because if there is no real benefit to changing it why take the risk at all?
Well the issue is that this behavior is not expected that you are returning a different data type then the column in the table.


Kathey


Reply via email to