Kathey Marsden wrote:
Lance J. Andersen wrote:
This issue pointed out a problem in the JDBC EoD RI which made the
assumption that the value returned matched the column type in the
base table.
A Derby user encountered this issue as well, trying to use 10.2 and
JDBC EoD http://binkley.blogspot.com/2006/04/nifty-jdbc-40.html.
Well, it appears that the behavior in Derby was copied from the IBM DB2
driver i am afraid, which did not come up on my EG call discussion
yesterday as a difference in behavior, but that happens as well without
sometimes specifically testing. Nothing sadly is ever easy is it...
So here is a benefit. The change may ease migration to Derby for
apps that make this assumption.
It would help with some databases such as Oracle for sure.
I hit a similar thing recently that Derby
Clob.getSubString does not support a zero offset and DDLUtils
expected it to. (That one is still on my list to file. I don't know
yet if that is a Derby bug or not. ) Another similar case is
DERBY-1501 where it would be nice if Derby were more forgiving of
non-portable apps. Of course in both of those other cases we would
just be adding to existing support, not changing existing behavior and
`there is a risk to apps that develop on Derby and expect to be able
to move without changes to another db.
Anyway I think if you would like to make this change it would be
reasonable to file a Jira issue and pursue due diligence with the user
community.
Understand, the original intent of this thread was also to try and
understand why this behavior was there and know i know.
I'll get in touch with some of the users I work with and see if it
might be an issue, but if limited to what has been outlined so far I
tend to think it won't conflict with most typical usage cases. I
think that basically folks are going to be calling getLong() or
getInt() on the ResultSet returned and not getObject. If they are
looking at the metadata they are expecting it to be as you describe.
But I will wait until we hear more. My biggest concerns with the
change are:
1) The precedent it sets. That we can change compliant, documented
behaviour like this. But reading the ForwadCompatibility goal I
feel reassured that maybe this is ok.
"The goal is to allow any application written against the public
interfaces of an older version of Derby to run, without any changes,
against a newer version of Derby."
Maybe though, the ForwardCompatiblity guidelines should have
information on due dilligence when making an incompatible change.
2) The potential high risk and impact of the code change for
client/server as outlined in my earlier mail.
Kathey